那麼,現在,大家應該已經看清楚。這張圖是我自己隨手畫的,畫完之後發現,哇,這不就是經典的 AbstractFactory模式的那張圖嗎?現在,你了解嗎?
必勝客來了,也做漢堡和雞腿。那麼怎麼辦呢?非常容易,我們消費者根本不管這些,只管把必勝客 加入我們的大腦(配置文件),需要的時候,直接走進去就行了。僅僅需要添加一個必勝客工廠,必勝客 漢堡,必勝客雞腿,OK,一切搞定。那麼又有人問了,我要喝汽水怎麼辦呢?我偷偷告訴你,這裡不賣~ :)哈哈,希望大家學習愉快,工作愉快!!
以上是我在網上看到一篇仁兄寫的文章,對我思想上的觸發很大。自己琢磨了一會寫出了下面的代碼 。
publicabstractclassKuaiCanFactory //快餐工廠
{
//兩個抽象方法,您吃雞腿呢,還是漢堡呀?因為是抽象出來的,所以不分商家哦!
publicabstractJiTuIEatJiTui();
publicabstractHanBaoeatHanBao();
}
//繼續寫類
publicclassMDLFactory:KuaiCanFactory //麥當勞工廠
{
publicoverrideJiTuIEatJiTui()
{
returnnewMDLJiTui();
}
publicoverrideHanBaoeatHanBao()
{
returnnewMDLHanBao();
}
}
//有了麥當勞當然少不了KFC啦。
//肯德基工廠及麥當勞工廠都實現了eatJiTui(),eatHanBao()方法。
publicclassKDJFactory:KuaiCanFactory
{
publicoverrideJiTuIEatJiTui()
{
returnnewKDJJiTui();
}
publicoverrideHanBaoeatHanBao()
{
returnnewKDJHanBao();
}
}
//下面就到食物了。。
publicabstractclassHanBao //漢堡抽象類
{
publicabstractvoidgetHanBao();
}
publicclassMDLHanBao:HanBao//具體的麥當勞漢堡
{
publicoverridevoidgetHanBao()
{
Console.WriteLine("麥當勞漢堡");
}
}
publicclassKDJHanBao:HanBao //具體的肯德基漢堡
{
publicoverridevoidgetHanBao()
{
Console.WriteLine("肯德基漢堡");
}
}
publicabstractclassJiTui //雞腿抽象類
{
publicabstractvoidgetJiTui();
}
publicclassKDJJiTui:JiTui //具體的肯德基雞腿
{
publicoverridevoidgetJiTui()
{
Console.WriteLine("肯德基雞腿");
}
}
classMDLJiTui:JiTui //具體的麥當勞雞腿
{
publicoverridevoidgetJiTui()
{
Console.WriteLine("麥當勞雞腿");
}
}
//這樣就大功告成,客戶去快餐店吃雞腿,並不關心他們怎麼拿出來的,只需要大吼一聲“我吃雞腿” ,就OK了。
staticvoidMain(string[]args)
{
//這裡或許使用簡單工廠來處理選擇商店更好
KuaiCanFactoryKC=newKDJFactory();//想吃KFC的雞腿,那麼就去KFC。
JiTuijt=KC.eatJiTui();//想吃雞腿了,那麼就告訴KC(快餐店)
jt.getJiTui();//雞腿拿來咯~~……
HanBaohb=KC.eatHanBao();//想吃漢堡
hb.getHanBao();
KC=newMDLFactory();
jt=KC.eatJiTui();
jt.getJiTui();
hb=KC.eatHanBao();
hb.getHanBao();
}
輸出結果:
肯德基雞腿
肯德基漢堡
麥當勞雞腿
麥當勞漢堡
飽了~~~~希望別吃壞了肚子。。要是哪不對,就給我留言,謝謝!!!