2012년 4월 24일 화요일

[Java Design Pattern_3]Template Method 샘플 코드1

@ 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();  
      }  
 }  



댓글 없음:

댓글 쓰기