工廠方法模式
前序
小菜同學有個同學叫薛磊風,他做人很低調,經常去勤工儉學.但不巧的是星期天他走在路上被車撞了,并送進了醫院.他在醫院中對小菜和他的同學們說,他經常去幫助以為老奶奶,但是現在他被車撞傷了,沒辦法繼續去幫助那位老奶奶了.應此他希望小菜和其他同學能夠幫助他去照顧那位老奶奶,如果老奶奶問起他們的名字時不要提任何人的名字,說是學雷鋒做好事就行了.
社區志愿者也可以幫助老奶奶,應此幫助老奶奶的對象就可分為(學雷鋒的大學生和社區志愿者),請你用工廠方法模式來設計出幫助老奶奶這件事.
工廠方法模式
核心工廠類不再負責所有產品的創建,而是將具體創建的工作交給子類去做,成為一個抽象工廠角色,僅負責給出具體工廠類必須實現的接口,而不接觸哪一個產品類應當被實例化這種細節。
實現方法(UML類圖)

實現代碼
#include <stdio.h>
// 雷鋒
class LeiFeng
{
public:
void Sweep()
{
printf("掃地\n");
}
void Wash()
{
printf("洗衣\n");
}
void BuyRice()
{
printf("買米\n");
}
};
// 學雷鋒的大學生
class Undergraduate : public LeiFeng
{
public:
};
// 社區志愿者
class Volunterr : public LeiFeng
{
public:
};
// 雷鋒工廠
class IFactory
{
public:
virtual LeiFeng* CreateLeiFeng()=0;
};
// 學雷鋒的大學生工廠
class UndergraduateFactory : public IFactory
{
public:
virtual LeiFeng* CreateLeiFeng()
{
return new Undergraduate();
}
};
// 社區志愿者工廠
class VolunterrFactory : public IFactory
{
public:
virtual LeiFeng* CreateLeiFeng()
{
return new Volunterr();
}
};
int main()
{
IFactory* factory = new UndergraduateFactory();
LeiFeng* student = factory->CreateLeiFeng();
student->BuyRice();
student->Sweep();
student->Wash();
delete factory;
delete student;
return 0;
}
運行結果
買米
掃地
洗衣
所有文件打包下載
posted on 2011-05-10 19:41
lwch 閱讀(1833)
評論(0) 編輯 收藏 引用 所屬分類:
設計模式