factory method pattern

Pattern 2010. 11. 28. 19:33
  • 개요
    • 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스에서 책임지도록 한다.
  • 구조 예


  • 소스
public class Unit {
protected void move() {
System.out.println("Unit move");
}
protected void attack() {
System.out.println("Unit attack");
}
}
public class Marine extends Unit {
protected void attack() {
System.out.println("Marine move");
}
protected void move() {
System.out.println("Marine attack");
}
}
public class Battlecruiser extends Unit {
protected void attack() {
System.out.println("Battlecruiser move");
}
protected void move() {
System.out.println("Battlecruiser attack");
}
}
public abstract class Factory {
abstract Unit createUnit();
public void operation() {
Unit unit = createUnit();
unit.move();
unit.attack();
}
}
public class Barrack extends Factory {
Unit createUnit() {
return new Marine();
}
}
public class StarPort extends Factory {
Unit createUnit() {
return new Battlecruiser();
}
}
public class Client {
public static void main(String[] args) {
Factory barrack = new Barrack();
barrack.operation();
Factory starPort = new StarPort();
starPort.operation();
}
}



Posted by 파이팅야
,