Facotry method 예제
원문 : http://blog.naver.com/inho1213/80046367062
_Farm = new DogFarm(); _Farm->NewAnimal();
delete _Farm;
return 0;
}
C++ 손 놓은지 어언 1년이 넘어가니까...
다 까먹은 듯 하다... -_-;;
자바에는 가비지 컬렉터 때문에 소멸자 신경 안 쓰고 살고 있었는데...
오랜만에 delete 해주는데 내가 생각한대로 소멸자 호출이 안되서 당황하고 있었다...
바보... C++은 virtual을 붙여야 동적 바인딩이 된다는걸 잊고 있었다... -_-;;
더군다나 virtual을 써먹을라면 포인터로 선언해야 된다는 것도...
벌써... 자바의 노예가 되어버린건가... ㅠㅠ
어쨋든 다음은 자바로 수정한 예제이다...
public abstract void speak(); }
class Dog extends Animal { public Dog() { System.out.println("Dog()"); }
public void speak() { System.out.println("Bowwow~ Bowwow~"); } }
class Cat extends Animal { public Cat() { System.out.println("Cat()"); }
public void speak() { System.out.println("Miaow~ Miaow~"); } }
abstract class Farm { public Farm() { System.out.println("Farm()"); }
public void newAnimal() { Animal animal = createAnimal(); animal.speak(); }
public abstract Animal createAnimal(); }
class DogFarm extends Farm { public DogFarm() { System.out.println("DogFarm()"); }
public Animal createAnimal() { return new Dog(); } }
class CatFarm extends Farm { public CatFarm() { System.out.println("CatFarm()"); }
public Animal createAnimal() { return new Cat(); } }
public class FactoryMethodTest { public static void main(String arg[]) { Farm f = new DogFarm(); f.newAnimal(); } }
Factory Method에 대한 예제 파일은 수도 없이 많이 있는데...
그나마 이 예제가 가장 개념에 맞는 쉬운 설명인 듯 하다...
저 UML이 가장 확실하게 표현 해주는 것 같다...
인스턴스의 생성을 서브 클래스로 미룬다...
이게 핵심인 듯...
출처 Factory Method 예제|작성자 따굴찬
요기서 긁어왔습니다.