최근 포토로그


2008/07/27 19:31

[DesignPattern - Factory Method] sample1 study. note

Design Pattern - Factory Method

1. 클래스다이어그램


2. Source
  • Product.java
    package com.dazzilove.factorymethod.sample1.framework;

    public abstract class Product {
    public abstract void use();
    }
  • Factory
    package com.dazzilove.factorymethod.sample1.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);
    }
  • IdCard.java
    package com.dazzilove.factorymethod.sample1.idcard;

    import com.dazzilove.factorymethod.sample1.framework.Product;

    public class IdCard extends Product {

    private String owner;

    public IdCard(String owner) {
    System.out.println(owner + "의 카드를 만듭니다.");
    this.owner = owner;
    }

    @Override
    public void use() {
    System.out.println(owner + "의 카드를 사용합니다.");
    }

    public String getOwner() {
    return this.owner;
    }
    }
  • IdCardFactory.java
    package com.dazzilove.factorymethod.sample1.idcard;

    import java.util.Vector;

    import com.dazzilove.factorymethod.sample1.framework.Factory;
    import com.dazzilove.factorymethod.sample1.framework.Product;

    public class IdCardFactory extends Factory {

    private Vector owners = new Vector();

    @Override
    protected Product createProduct(String owner) {
    return new IdCard(owner);
    }

    @Override
    protected void registerProduct(Product product) {
    owners.add(((IdCard)product).getOwner());
    }

    public Vector getOwners() {
    return owners;
    }
    }
  • Main.java
    package com.dazzilove.factorymethod.sample1.idcard;

    import com.dazzilove.factorymethod.sample1.framework.Factory;
    import com.dazzilove.factorymethod.sample1.framework.Product;

    public class Main {
    public static void main(String[] args) {
    Factory factory = new IdCardFactory();
    Product idCard1 = factory.create("홍길동");
    Product idCard2 = factory.create("이순신");
    Product idCard3 = factory.create("강감찬");
    idCard1.use();
    idCard2.use();
    idCard3.use();
    }
    }


3. 결과출력

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://dazzilove.egloos.com/tb/631107 [도움말]

핑백

  • dazzilove : 디자인 패턴 공부 2008-07-27 19:31:57 #

    ... ple1 : "Java 언어로 배우는 디자인 패턴 입문" Chapter3. Template Method - 구체적인 처리를 하위 클래스에게 위임Factory Methodsample1 : "Java 언어로 배우는 디자인 패턴 입문" Chapter4. Factory Method - 인스턴스 작성을 하위 클래스에게 위임 ... more

덧글

덧글 입력 영역



미투데이

문화꽃 키우기