Template Method패턴
상위클래스에서 어떤 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴입니다.
어렵지않은 패턴이라서 아래 코드들을 분석해보면 쉽게 이해하실수 있을겁니다.
public abstract class AbstractDisplay {
//추상메소드 3개
public abstract void open();
public abstract void print();
public abstract void close();
//추상메소드를 이용해서 메소드를 구현해둠
//추상메소드는 자식 클래스에서 구체화 될 예정
public final void display(){
open();
for(int i=0; i < 5; i++){
print();
}
close();
}
}
public class CharDisplay extends AbstractDisplay{
//하위클래스에서 내용들을 구체화함
//>>문자<< 이렇게 출력하고싶음
private char ch;
public CharDisplay(char ch){
this.ch = ch;
}
//@Override
public void close() {
// TODO Auto-generated method stub
System.out.println("<<");
}
//@Override
public void open() {
// TODO Auto-generated method stub
System.out.print(">>");
}
//@Override
public void print() {
// TODO Auto-generated method stub
System.out.print(ch);
}
}
public class StringDisplay extends AbstractDisplay{
//여기서도 추상메소드를 구현함
private String string;
private int width;
public StringDisplay(String string){
this.string = string;
this.width = string.getBytes().length;//바이트단위의 길이도 기억해둠
// this.width = string.length(); //이렇게 되면 한글은 2바이트인데 1바이트 인식해서 결과가 이상하게나옴
}
//@Override
public void close() {
// TODO Auto-generated method stub
printLine();
}
//@Override
public void open() {
// TODO Auto-generated method stub
printLine();
}
//@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("|"+ string + "|");
}
//+--------+ 이런 효과를 주는 메소드
private void printLine(){
System.out.print("+");
for(int i = 0; i < width; i++){
System.out.print("-");
}
System.out.println("+");
}
}
메인 클래스
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AbstractDisplay d1 = new CharDisplay('H');
AbstractDisplay d2 = new StringDisplay("Hello, world");
AbstractDisplay d3 = new StringDisplay("안녕하세요.");
d1.display();
d2.display();
d3.display();
}
}
'프로그래밍 > 자바 디자인패턴' 카테고리의 다른 글
디자인패턴 Facade 패턴 (0) | 2012.08.06 |
---|---|
디자인 패턴 ProtoType패턴 (0) | 2012.08.03 |
디자인 패턴 singleton 패턴 (0) | 2012.08.03 |
디자인 패턴 Factory Method 패턴 (0) | 2012.08.03 |
디자인 패턴 위임에 의한 Adapter 패턴(인스턴스를 이용한) (0) | 2012.08.03 |
디자인 패턴 Adapter패턴 상속을 사용한 Adapter패턴 (0) | 2012.08.03 |
디자인패턴 Chain of Responsibility 패턴 (0) | 2012.08.02 |
디자인 패턴 Visitor 패턴 (0) | 2012.08.01 |