@ AbstractClass (추상 클래스)
- 이 클래스에서는 탬플릿 메소드를 구현(정의)합니다.
public abstract class AbstractDisplay {
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();
}
}
@ ConcreateClass(구현 클래스)
- 추상 클래스에서 정의된 메소드를 구체적으로 구현 합니다.
1. CharDisplay
public class CharDisplay extends AbstractDisplay {
char ch;
public CharDisplay(char ch) {
this.ch = ch;
}
@Override
public void open() {
System.out.print("<<");
}
@Override
public void print() {
System.out.print(ch);
}
@Override
public void close() {
System.out.println(">>");
}
}
2. StringDisplay
public class StringDisplay extends AbstractDisplay {
String str;
public StringDisplay(String str) {
this.str = str;
}
@Override
public void open() {
printLine();
}
@Override
public void print() {
System.out.println("|" + str + "|");
}
@Override
public void close() {
printLine();
}
private void printLine() {
System.out.print("+");
try {
for (int i = 0; i < str.getBytes("euc-kr").length; i++)
System.out.print("-");
System.out.println("+" + str.getBytes("euc-kr").length);
} catch (Exception e) {
}
}
}
@ Main Class
public class Main {
public static void main(String[] args) {
AbstractDisplay d1=new CharDisplay('H');
AbstractDisplay d2=new StringDisplay("Hello, world");
AbstractDisplay d3=new StringDisplay("안녕하세요.");
d1.display();
d2.display();
d3.display();
}
}
댓글 없음:
댓글 쓰기