日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抽象工厂模式解析例子

發(fā)布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽象工厂模式解析例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
抽象工廠模式中的有以下的四種角色:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

?

抽象工廠(Abstract Factory)角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統(tǒng)商業(yè)邏輯無關的。

具體工廠(Concrete Factory)角色:這個角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實例。這個角色含有選擇合適的產(chǎn)品對象的邏輯,而這個邏輯是與應用系統(tǒng)的商業(yè)邏輯緊密相關的。

抽象產(chǎn)品(Abstract Product)角色:擔任這個角色的類是工廠方法模式所創(chuàng)建的對象的父類,或它們共同擁有的接口。

具體產(chǎn)品(Concrete Product)角色:這個角色用以代表具體的產(chǎn)品。

抽象工廠模式就相當于創(chuàng)建實例對象的new,由于經(jīng)常要根據(jù)類生成實例對象,抽象工廠模式也是用來創(chuàng)建實例對象的,所以在需要新的事例對象時便可以考慮是否使用工廠模式。雖然這樣做可能多做一些工作,但會給你系統(tǒng)帶來更大的可擴展性和盡量少的修改量。? ?

舉例來說:生產(chǎn)餐具和相應食物的工廠,有兩個車間,其中一個車間用以生產(chǎn)餐具,一個車間用以生產(chǎn)相應的食物。

當消費者消費時,只需要向相應的具體工廠請求具體餐具和具體食物便可以使用餐具消費食物。

使用UML圖表示以上的描述如下: 1抽象工廠與具體工廠

2抽象餐具與具體餐具(生產(chǎn)車間)

3抽象食物與具體食物

每個具體工廠生產(chǎn)出來的具體產(chǎn)品根據(jù)不同工廠的不同各不相同,但是客戶使用產(chǎn)品的方法是一致的。比如客戶在得到餐具和食物之后,兩者的搭配是正確的(使用湯匙喝牛奶,使用刀子切面包)。

在本例子中有3個具體工廠AKetchen BKetchen BKetchen,分別生產(chǎn)牛奶和湯匙、面包和刀、肉和叉子。牛奶、面包和肉都實現(xiàn)了食物接口。湯匙、刀和叉子都實現(xiàn)了餐具接口。

抽象工廠的接口定義如下所示;

????? package abstractFactory;

public interface KetchenFactory{

??? public Food getFood();

??? public TableWare getTableWare();

}

抽象餐具的接口定義如下所示:

package abstractFactory;

public interface TableWare{

? public String getTool();

}

抽象事物的接口定義如下所示:

package abstractFactory;

public interface Food{

??? public String getEatable();

}

而具體的實現(xiàn)也非常簡單,以AKetchen為例子

具體工廠AKetchen的定義如下所示;

package abstractFactory;

public class AKetchen implements KetchenFactory{

??? public Food getFood(){

?????? return new Milk();

??? }

??? public TableWare getTableWare(){

?????? return new Spoon();

??? }

}

?

具體餐具(spoon)的定義如下所示:

package abstractFactory;

public class Spoon implements TableWare{?

??? public String getTool() {

?????? return "spoon";

??? }

}

具體食物(milk)的定義如下所示:

package abstractFactory;

public class Milk implements Food{

??? public String getEatable(){

?????? return "milk";

??? }

}

客戶端的定義如下:

package abstractFactory;

public class Client{

??? public void eat(KetchenFactory k){

?????? System.out.println("A person eat "+k.getFood().getEatable()

????????????? +" with "+k.getTableWare().getTool()+"!");

??? }

??? public static void main(String[] args){

?????? Client client= new Client();

?????? KetchenFactory kf = new AKetchen();

?????? client.eat(kf);

?????? kf=new BKetchen();

?????? client.eat(kf);

?????? kf= new CKetchen();

?????? client.eat(kf);

??? }

}

小結(jié):抽象工廠模式特別適合于這樣的一種產(chǎn)品結(jié)構:產(chǎn)品分為幾個系列,在每個系列中,產(chǎn)品的布局都是要同的,在一個系列中某個位置的產(chǎn)品,在另一個系列中一定有一個對應的產(chǎn)品。這樣的產(chǎn)品結(jié)構是存在的,這幾個系列中同一位置的產(chǎn)品可能是互斥的,它們是針對不同客戶的解決方案,每個客戶都只擇其一。

優(yōu)點:消費者任何時候需要某種產(chǎn)品,只需向工廠請求即可。消費者無須修改就可以接納新產(chǎn)品。

缺點:當具體產(chǎn)品修改時,相應的工廠類也要做相應的修改。

?

如果覺得寫得好,請一定要支持一下,以給我信心和鼓勵把剩下的模式例子寫出來。

?

轉(zhuǎn)載于:https://blog.51cto.com/tianli/32545

總結(jié)

以上是生活随笔為你收集整理的抽象工厂模式解析例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品国产一区二区三区四区 | 欧美成人做爰大片免费看黄石 | 最近中文字幕在线免费观看 | 亚洲天堂中文字幕在线 | 国产一二三四五区 | 一区二区三区在线电影 | 97人妻一区二区精品视频 | 黑人借宿巨大中文字幕 | 欧美黄色大片视频 | 国产只有精品 | 国产精品久久久久久久久久久久久久久久久 | 肉色超薄丝袜脚交一区二区 | 国产麻豆午夜三级精品 | 91精品免费视频 | 国产日韩网站 | 人妻丰满熟妇岳av无码区hd | 少妇一级淫片免费播放 | 黄色一级一片免费播放 | 最新永久地址 | 丝袜av网站 | 水果视频污 | 天天干天天操天天玩 | 激情视频免费观看 | jizzjizzjizz国产| 91成人免费在线视频 | 一路向西在线看 | 精品aaa| 久久艹免费视频 | 亚洲成人福利在线 | 国产自在线 | 91啪在线观看 | 婷婷视频| 人妻丝袜一区二区三区 | 国产另类专区 | 日本强好片久久久久久aaa | 韩国视频一区二区三区 | 午夜资源网 | www,五月天,com | 国产理论片 | 羞羞网站在线观看 | 亚洲精品乱码久久久久久麻豆不卡 | 天天爽影院 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 国产精品久久无码 | 日本老太婆做爰视频 | 青青视频在线播放 | 免费一级片在线观看 | 国产又粗又长又爽 | 成人毛片一区二区三区 | 艳妇臀荡乳欲伦交换在线播放 | 91精品福利在线 | 欧美美女一区二区 | 久草免费看 | 国产精品最新 | 四虎少妇做爰免费视频网站四 | 在线不卡免费av | 国产午夜视频 | 欧美福利在线 | 欧洲做受高潮免费看 | 亚色成人| 精品人妻伦一二三区久 | 三级黄色免费片 | 国产一区二区片 | 一级不卡毛片 | 国产精品久久久久精 | 无套中出丰满人妻无码 | 中文字幕一区二区三区在线不卡 | 二级毛片 | 午夜精品视频一区 | 国产精品无码一区二区无人区多人 | 蜜桃视频在线播放 | 国产色99 | 黑人玩弄人妻一区二 | 国产经典三级在线 | 在线国产日韩 | 日批在线 | 亚洲欧美综合视频 | 欧美日本在线看 | 日韩精品乱码久久久久久 | 99国产精品99 | 欧美在线性视频 | 午夜精品成人毛片非洲 | 91蝌蚪91九色| 国产老头老太作爱视频 | 亚洲欧洲精品成人久久奇米网 | 日本三级中文字幕 | 壮汉被书生c到合不拢腿 | 婷婷色视频 | 日本a级c片免费看三区 | 天天干天天操天天插 | 午夜av大片 | 成人1区2区3区 | 久久久久91 | 国产一区日韩 | 在线观看亚洲一区二区 | www国产com| 欧美男女啪啪 | 亚洲国产精品成人综合 | 绿帽av |