// 애완 동물 정의 클래스
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();
}
};
{
// 팩토리 패턴
DogFarm _dogFarm;
_dogFarm.NewAnimal();
}
댓글 없음:
댓글 쓰기