2013년 12월 20일 금요일

Design pattern - Factory pattern

서로 관련된 객체들의 집단을 생성하는 인터페이스를 제공한다.  생성되는 객체의 구체적 내용에 독립적인 개발을 가능하게 한다.


// 애완 동물 정의 클래스
class Animal
{
public:
Animal() {}
~Animal() {}
virtual void Speak()=0;
};

class Dog: public Animal
{
public:
Dog() 
{
cout << "개가 태어 났습니다. " << endl;
}
~Dog()
{
cout << "개가 죽었습니다. " << endl;
}
void Speak()
{
cout << "멍멍..." << endl;
}
};

class Cat: public Animal
{
public:
Cat() 
{
cout << "고양이가 태어 났습니다. " << endl;
}
~Cat()
{
cout << "고양이가 죽었습니다. " << endl;
}
void Speak()
{
cout << "야옹..." << endl;
}
};




// 동물 농장 클래스
class Farm
{
public:
Farm() { cout << "농장 오픈. " << endl; NewAnimal(); }
~Farm() { cout << "농장 폐쇄. " << endl; }
void NewAnimal()
{
Animal *pAnimal = CreateAnimal();
pAnimal->Speak();
}
virtual Animal* CreateAnimal()=0;
};

class DogFarm: public Farm
{
public:
DogFarm() { cout << "개농장 오픈. " << endl; }
~DogFarm() { cout << "개농장 폐쇄. " << endl; }
Animal* CreateAnimal()
{
return new Dog(); 
}
};

class CatFarm: public Farm
{
public:
CatFarm() { cout << "고양이 농장 오픈. " << endl; }
~CatFarm() { cout << "고양이 농장 폐쇄. " << endl; }
Animal* CreateAnimal()
{
return new Cat(); 
}
};



void main()
{
// 팩토리 패턴
DogFarm _dogFarm;
_dogFarm.NewAnimal();
}


댓글 없음:

댓글 쓰기