알고리즘의 구조를 템플릿으로 제공하는 방법. 각각의 내부 구현을 서브 클래스가 구현하도록 한다.
상속을 주로 사용한다.
public class Client {
public static void amin(String[] args) {
FileProcessor fileProcessor = new FileProcessor("number.txt");
int reuslt = fileProcessor.process();
}
}
public class fileProcessor {
private String path;
public fileProcessor(String path) {
this.path = path;
}
public int process() {
try(BufferedReader reader = new BufferedReaderview(new FileReader(path))) {
int result = 0;
String line = null;
while line = reader.readLine()) != null) {
reuslt += Integer.parseInt(line);
}
return resuilt;
}catch(IOexception e) {
throw new IllegalArgumentExcpetion("path: + "aaa", e);
}
}
}
public abstract class fileProcessor {
private String path;
public fileProcessor(String path) {
this.path = path;
}
public int process() {
try(BufferedReader reader = new BufferedReaderview(new FileReader(path))) {
int result = 0;
String line = null;
while line = reader.readLine()) != null) {
reuslt = getResult(result, Integer.parseInt(line));
}
}catch(IOexception e) {
throw new IllegalArgumentExcpetion("path: + "aaa", e);
}
}
protect abstract int getResult(int result, String line);
}
public class Plus extends FileProcessor {
public Plus(String path) {
super(path);
}
@Override
protected int getResult(int result, int number) {
return result += number;
}
}
콜백으로 상속 대신 위임
을 사용하는 템플릿 패턴
public interface Operator {
abstract int getReuslt (int result, int number);
}
public class fileProcessor {
private String path;
public fileProcessor(String path) {
this.path = path;
}
public int process(Operator operator) {
try(BufferedReader reader = new BufferedReaderview(new FileReader(path))) {
int result = 0;
String line = null;
while line = reader.readLine()) != null) {
reuslt = operator.getResult(result, Integer.parseInt(line));
}
}catch(IOexception e) {
throw new IllegalArgumentExcpetion("path: + "aaa", e);
}
}
}
public class Client {
public static void main(String[] args) {
FileProcessor fileProcessor = new FileProcesor("number.txt");
int reuslt = fileProcessor.process(new Plus());
}
}
post, get -> 요청이 들어올 때 인스턴스 초기화
내부 메소드들을 호출하고 구체화
템플릿 콜백 패턴. execute를 사용해서 sql을 실행할 때 주로 insert 쿼리 시 사용된다.
get에는 query를 사용한다.