2012년 4월 24일 화요일

[Java Design Pattern_4]Factory Method 샘플 코드1





1. Framework

 - Product  클래스 : '제품'을 표현한 추상 클래스로서 추상 메서드 use만 선언 되어 있다.

 package sample.framework;  
 public abstract class Product {  
      public abstract void use();  
 }  


- Factory 클래스 : 템플릿 패턴이 적용되어 있습니다. 추상 메서드 createProduct,registerProduct는 하위 클래스에서 구현 합니다. create 메서드는 Product의 인스턴스를 생성하는 것으로 규정하고 있습니다. 즉, createProduct에서 제품을 만들어서 registerProduct에서 등록한다고 규정하고 있습니다.

 package sample.framework;  
 public abstract class Factory {  
      public final Product create(String owner) {  
           Product p = createProduct(owner);  
           registerProduct(p);  
           return p;  
      }  
      protected abstract Product createProduct(String owner);  
      protected abstract void registerProduct(Product product);  
 }  


2. Idcard

- IDCard 클래스 : Product 클래스를 상속받아서 구현.

 package sample.idcard;  
 import sample.framework.Product;  
 public class IDCard extends Product {  
      private String owner;  
      IDCard(String owner) {  
           System.out.println(owner + "의 카드를 만듭니다.");  
           this.owner = owner;  
      }  
      public void use() {  
           System.out.println(owner + "�̃의 카드를 사용합니다.");  
      }  
      public String getOwner() {  
           return owner;  
      }  
 }  


- IDCardFactory : Factory 클래스를 상속받아서 구현.

 package sample.idcard;  
 import java.util.ArrayList;  
 import java.util.List;  
 import sample.framework.Factory;  
 import sample.framework.Product;  
 public class IDCardFactory extends Factory {  
      private List owners = new ArrayList();  
      protected Product createProduct(String owner) {  
           return new IDCard(owner);  
      }  
      protected void registerProduct(Product product) {  
           owners.add(((IDCard) product).getOwner());  
      }  
      public List getOwners() {  
           return owners;  
      }  
 }  



3. Main

 package sample;  
 import sample.framework.Factory;  
 import sample.framework.Product;  
 import sample.idcard.IDCardFactory;  
 public class Main {  
      public static void main(String[] args) {  
           Factory factory = new IDCardFactory();  
           Product card1 = factory.create("홍길동");  
           Product card2 = factory.create("김민수");  
           Product card3 = factory.create("구로이드");  
           card1.use();  
           card2.use();  
           card3.use();  
      }  
 }  






댓글 없음:

댓글 쓰기