大話設計模式讀書筆記--11.抽象工廠模式

定義

抽象工廠模式定義:

提供一個創建一系列相關或相關依賴對象的接口,而無需指定他們具體的類

抽象工廠模式通常是用于創建一族產品,并且這族產品分不同的等級;不同的具體工廠類生產不同等級的一族產品

比如下圖(來源于網絡)

兩廂車和三廂車稱為兩個不同的等級結構;2.0排量兩廂車和2.0排量三廂車成為同一個產品族。

與工廠方法模式的區別

工廠的產品全部屬于同一個等級結構,則屬于工廠方法模式;如果工廠的產品來自多個等級結構,則屬于抽象工廠模式

模式結構

下圖來源于網絡

AbstractFactory:是一個抽象工廠,包含所有產品創建的的抽象方法

ProductA和我ProductB: 是抽象產品,之所以抽象,是因為有兩種不同的實現

代碼實現

場景: ?sqlServer數據庫中有兩User表和Department表, 由于客戶需求,需要把sqlServer數據庫換成Access數據庫

場景分析:?User相當于抽象產品ProductA,?sqlServer數據庫的User相當于ProductA1

點擊下載代碼: 抽象模式實現

點擊下載代碼: 簡單工廠+反射+配置文件

特點及使用場景

優點: ?在類內部對產品族的關聯關系進行定義和描述,而不必專門引入一個新的類來進行管理

缺點: ?擴展困難,產品族中需要增加一個新的產品,則幾乎所有的工廠類都需要進行修改

使用場景: ?就是一個繼承體系中,如果存在著多個等級結構(即存在著多個抽象類),

? ? ? ? ? ? ? 并且分屬各個等級結構中的實現類之間存在著一定的關聯或者約束,就可以使用抽象工廠模式

轉載于:https://www.cnblogs.com/liuconglin/p/6436027.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371472.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在線壓縮html,JS代碼壓縮 - javascript代碼壓縮 - jsmin在線js壓縮工具

輸入代碼:// is.js// (c) 2001 Douglas Crockford// 2001 June 3// The -is- object is used to identify the browser. Every browser edition// identifies itself, but there is no standard way of doing it, and some of// the identification is deceptive. T…

Primefaces dataTable設置某個cell的樣式問題

設置primefaces dataTable的源網段列的Cell可以編輯,當回車鍵保存時,判斷是否輸入的網段合法,如果不合法就顯示警告信息,并將這個不合法的數據用紅色表示。問題是,怎么給這一個cell設定樣式。通過給標簽設定ID然后在后…

鴨子在Java中打字? 好吧,不完全是

根據維基百科,鴨子的打字是: 動態類型的類型,其中對象的方法和屬性確定有效的語義,而不是其從特定類或特定接口的實現繼承 用簡單的話 當我看到一只鳥走路像鴨子,游泳像鴨子,嘎嘎像鴨子一樣時&#xff0c…

前端學習路線

第一部分 HTML 第一章 職業規劃和前景 職業方向規劃定位: web前端開發工程師 web網站架構師 自己創業 轉崗管理或其他 web前端開發的前景展望: 未來IT行業企業需求最多的人才 結合最新的html5搶占移動端的市場 自己創業做老板 隨著互聯網的普及we…

p1164【立方體求和】

題目: SubRaY有一天得到一塊西瓜,是長方體形的....SubRaY發現這塊西瓜長m厘米,寬n厘米,高h厘米.他發現如果把這塊西瓜平均地分成m*n*h塊1立方厘米的小正方體,那么每一小塊都會有一個營養值(可能為負,因為西瓜是有可能壞掉的,但是絕對值不超過200).現在SubRaY決定從這…

html生成自定義表格,自定義js的表格插件

場景:指定元素,生成自定義表格。目的:了解js的插件開發。html代碼:自定義表格插件var test new MyTable({elid:"mytable",//定義哪個div要生成表單thead:{//指定列名name:"姓名",age:"年齡",addr:…

使用JBehave,Gradle和Jenkins的行為驅動開發(BDD)

行為驅動開發 (BDD)是一個協作過程 ,產品負責人,開發人員和測試人員可以合作交付可為企業帶來價值的軟件。 BDD是 測試驅動開發 (TDD) 的合理下一步 。 行為驅動的發展 本質上,BDD是一種交付…

手型顯示html,css各種手型集合(css禁止手型)

html>css各種手型集合(css禁止手型).auto { cursor: auto; }.deafult { cursor: default; }.none { cursor: none; }.context-menu { cursor: context-menu; }.help { cursor: help; }.pointer { cursor: pointer; }.p…

Maven Fluido Skin和Javadoc類圖

我使用Maven網站已有一段時間了,對此我感到非常滿意。 我不想在Maven 3之后更新我的項目,但是沒關系,Maven 3帶來了許多新奇的東西。 但是,有兩件事使我感到煩惱:缺乏美觀和現代的外觀,以及瀏覽復雜代碼的J…

ZooKeeper安裝,部署

實驗環境 192.168.1.10  Zookeeper1:2181, Zookeeper2:2182 192.168.1.11  ZooKeeper3:2181 依賴環境 JDK1.7 安裝,配置 1、下載解壓 # 192.168.1.10cd /data/server tar -zxv -f zookeeper-3.4.6.tar.gz ln -s zookeeper-3.4.6 zookeeper1ln -s zookeeper-3.4.…

咸寧省2021年模擬高考成績查詢怎么查,2021咸寧市地區高考成績排名查詢,咸寧市高考各高中成績喜報榜單...

距離2018年高考還有不到一個月的時間了,很多人在準備最后沖刺的同時,也在關心高考成績。2018各地區高考成績排名查詢,高考各高中成績喜報榜單尚未公布,下面是往年各地區高考成績排名查詢,高考各高中成績喜報榜單,想要了解同學可以…

保證主題,JMS規范和ActiveMQ的消息傳遞

最近,一個客戶要求我仔細研究ActiveMQ的“持久”消息的實現,它如何應用于主題以及在存在非持久訂閱者的故障轉移方案中會發生什么。 我已經了解到,JMS語義規定,即使面對消息代理提供者失敗,也只能保證主題的持久訂戶以…

java中的除法及求余運算特殊性。

1.如果除法運算符的兩個操作數都是整數類型,則計算結果也是整數,就是將自然除法的結果截斷取整,例如19/4的結果是4,而不是5。并且除數不能0,否則將引起除0異常 2.如果運算符的兩個操作數有1個是浮點數,或兩…

林海峰老師python課件密碼

egon4573轉載于:https://www.cnblogs.com/fengjunhua/p/7395591.html

國際旅游管理專業跨專業考計算機,旅游管理考研我想跨專業考旅游管理專業的研究 – 手機愛問...

2005-12-11我是學旅游管理的大一學生,聽人說這專業就這位兄弟提出的苦惱在大學生中很典型呀!其實你說的不盡然!旅游管理專業,是個很有前景的專業呀!怎么會沒有前途呀?你對自己的人生也太悲觀了吧?就是你說,學校不太好,這可能對自身在大學四年的發展有所限制,但這主要還是看自…

Java注釋:探究和解釋

Java 5 SE的許多出色功能之一是Annotations構造的引入。 注釋是一些標簽,我們可以將其插入程序源代碼中,以使用某種工具對其進行處理并使其變得有意義。 注釋處理工具通常使用(Java 5 SE的)Reflection API在Java代碼或字節碼級別的…

C# 類

一 string 類型 變量.Length - 字符串長度,返回int類型 string s "abcdefg"; int a s . Length; Console.WriteLine(a); // 輸出結果為:7(此字符串有7個字符) // Length返回有多少個字符&am…

node+mongodb+win7

一、安裝mongodb,參照教程,注意要先啟動mongod.exe,再啟動mongd.exe。 轉載于:https://www.cnblogs.com/iloveyou-sky/p/7396997.html

cdrom是多媒體微型計算機,全國計算機二級題庫第三章

同時按下CTRLALTDEL組合鍵的作用是(使用任務管理器關閉不響應的應用程序下列說法正確的是(在微型機性能指標中,CPU的主頻越離,其運算速度越快)微型計算機鍵盤上的Tab鍵是(交替換檔鍵)微型計算機鍵盤上的Enter鍵是(回車鍵)微型計算機的運行速度的單位是mi…

Spring MVC控制器JUnit測試

JUnit測試Spring MVC控制器并非易事 。 但是最近,一個新項目 (即將在Spring推出)提供了新工具來簡化此工作。 這篇文章說明了如何通過JUnit測試來測試一個簡單的控制器。 該代碼是JUnit Testing Spring Service和DAO(帶有內存數據…