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

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