簡單工廠模式-之-什麼是產品線 And 抽象工廠模式-之-什麼是產品族
簡單工廠模式-之-什麼是產品線
簡單工廠模式中,有一個概念就是使用了多層次的產品結構,那麼什麼是產品結構或者說什麼是產品線?
假定我們有一個基準的產品標準Product,那麼所有繼承該基類或者傳遞基類(不止一層的繼承關係)就可以認為是一個系列的產品結構或者是產品線,我們可以用下面的繼承關係來看
Product1:Product Product11:Product1 Product12:Product1
Product2:Product Product21:Product2 Product22:Product2
很明顯,上面的繼承關係中 有兩條產品線,當然實際中的產品線可能是這個樣子的,可見所有的產品線上的產品其實都可以用Product這個基準的產品來表示

在這種產品線下那麼較為簡單的生產產品的方式就是為每一個產品建立一個工廠來生產它,如果把Product這一層抽象為interface那麼就如下圖所示

可見,簡單工廠模式中,每一個具體的Product-X都有一個具體的工廠Factory-X來對應的生成產品Product
抽象工廠模式-之-什麼是產品族
如上文所見,具體的工廠Factory-X對應具體的產品Product-X(其實是Product[繼承關係或者是interface的抽象關係]),那麼如果有下面這種情況又如何使用工廠模式來生成Product?
Product1:Product
Product11_0:Product1 Product12_0:Product1
Product11_1:Product1 Product12_1:Product1
即,產品有相近的改版品種,Product11_1是Product11_0的改版.Product12_1是Product12_0的改版.在這裡稱為一個產品族(Product Family).這個時候我們怎麼使用工廠模式呢?還是建立一個一個對對應工廠實現來具體對應Product嗎?顯然,這樣唑並不合適,既然是改版,那麼我們完全可以使用相同的工廠類中不同的工廠方法來創建具體的產品.即,如下圖所示

也就是說圖中左側的Factory實現IProduct1下所有的產品族的生成.圖中右邊的Factory實現IProduct2下所有的產品族的生成.這樣具體工廠Factory由於可以生成一條產品線下不同的產品族的產品而變成了抽象工廠.
簡單工廠模式-之-什麼是產品線 And 抽象工廠模式-之-什麼是產品族的更多相关文章
- linux下c++實現簡單的生產者消費者隊列模式
引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...
- COB(Chip On Board)的製程簡單介紹
前面提及 COB 的生產與 IC 的封裝製程幾乎是一致的,除了把 leadframe 改成了 PCB,把封膠由 molding 改成 dispensing,少了 triming & marki ...
- 【转】簡單講講 USB Human Interface Device
原地址http://213style.blogspot.com/2013/09/usb-human-interface-device.html 恩,發本文的原因是看到了以前畢業的朋友在旁邊的對話框問了 ...
- [Xamarin] 簡單使用Fragment 靜態篇 (转帖)
新的Android 開發,非常會使用到Fragment,不過官方範例有點小複雜,對初學者來說有點難消化,所以就記錄一下心得,這邊部落格將使用靜態的方法使用Fragment,Fragment 有自己的生 ...
- 转:[ASP.NET]重構之路系列v4 – 簡單使用interface之『你也會IoC』
前言 上次v3版本,我們將Entity, Service, Dao, Utility都放到了類別庫裡面,讓我們可以輕鬆的在不同專案中用同一份組件.雖然文章沒有獲得太多的讚賞,不過相信那一定是太多人會這 ...
- HTML Agility Pack:簡單好用的快速 HTML Parser
HTML Agility Pack:簡單好用的快速 HTML Parser Codeplex 軟體套件(Package)資訊 套件名稱 HTML Agility Pack 作者 Simon Mouri ...
- [Xamarin] 簡單實作ListActivity (转帖)
但是文中案例因為是用事先設好的Layout 但是如果需要被選擇的東西很多時該怎麼辦 我們討論一下,如何製作很簡單的List . 首先我們得先參考一下再android 思維下要製作一個List 需要的架 ...
- [SharePoint 2010] Visual Studio 2010內撰寫視覺化WebPart超簡單
新一代的Visual Studio 2010對於SharePoint 2010的專案撰寫,有非常另人讚賞的改進. 以往寫一個WebPart要搞好多雜七雜八的步驟,也要硬寫HTML輸出,當然有人說可以寫 ...
- ColorPic 一套簡單好用的顏色選擇器!
做美工的時候,常常會有配色.抓取顏色及獲取顏色代碼的困擾,專業人士可能有很好的工具來協助,但對於偶爾需要或非經常接觸美工的人來說,即便是有很好的工具,也還要花很多時間進行學習,常常就是看到一個漂亮的顏 ...
随机推荐
- Prim 最小生成树算法
Prim 算法是一种解决最小生成树问题(Minimum Spanning Tree)的算法.和 Kruskal 算法类似,Prim 算法的设计也是基于贪心算法(Greedy algorithm). P ...
- Python黑帽编程 3.2 ARP监控
Python黑帽编程 3.2 ARP监控 在第3.1节<ARP欺骗>中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具.在上一节的基础上,我们来实现一个ARP监 ...
- 源文件移动后gdb不显示代码的原因
源文件移动后gdb不显示代码的原因 问题 我们从一个最简单的C语言程序开始.源文件main.c在 用户目录gdb文件夹下. florian@florian-pc:~/gdb$ cat main.c ...
- 策划编写一个新的Helper类
https://code.csdn.net/jy02305022/blqw-data 有朋友看见的话给点意见呗
- Linux学习之Exam系统发布
配置时间:2015年11月27日 配置人:撰写人:微冷的雨 Happy 01.Linux安装图 欢迎页面 桌面 02.Linux命令之文件目录操作 给北大青鸟五道口校区创建三个机房(L4,L5,L ...
- jieba.NET与Lucene.Net的集成
首先声明:我对Lucene.Net并不熟悉,但搜索确实是分词的一个重要应用,所以这里还是尝试将两者集成起来,也许对你有一参考. 看到了两个中文分词与Lucene.Net的集成项目:Lucene.Net ...
- appledoc 使用brew命令安装使用
appledoc --project-name yushuyi12345677 --project-company "xiaoyu123" --company-id aaaa -- ...
- Objective-C 工厂模式(上) -- 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
- Spring<bean>标签是反射来实现的
- Referenced file contains errors (http://www.springframework.org/schema/context). For more information, right click on the message in the Problems
spring 配置文件的DTD或schema出问题,一般两种情况: 1.当前网络环境不稳定,按住ctrl+"http://www.springframework.org/schema/con ...