簡單工廠模式-之-什麼是產品線 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 一套簡單好用的顏色選擇器!
做美工的時候,常常會有配色.抓取顏色及獲取顏色代碼的困擾,專業人士可能有很好的工具來協助,但對於偶爾需要或非經常接觸美工的人來說,即便是有很好的工具,也還要花很多時間進行學習,常常就是看到一個漂亮的顏 ...
随机推荐
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- 用css画出三角形
看到有面试题里会有问到如何用css画出三角形 众所周知好多图形都可以拆分成三角形,所以说会了画三角形就可以画出很多有意思的形状 画出三角形的原理是调整border(边框)的四个方向的宽度,线条样式以及 ...
- Atitit sql计划任务与查询优化器--统计信息模块
Atitit sql计划任务与查询优化器--统计信息模块 每一个统计信息的内容都包含以上三部分的内容. 我们依次来分析下,通过这三部分内容SQL Server如何了解该列数据的内容分布的. a.统计信 ...
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...
- Content-Type List
Content-Type List Description of Data Content Typical Filename Extensions MIME type/subtype Te ...
- Mysql命令show global status求根溯源
近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的. 在此之前,我们必须搞明白mysql对于这个命令的执行过程 ...
- jsdoc
一.javascript注释规范 我们在编写javascript文件的时候,一般会添加一些注释.例如一些文件.类.方法和属性都应该用合适的标记和类型进行注释.这里不但方便我们的阅读,也能养成一个好的习 ...
- 使用easyui-layout布局
<body class="easyui-layout"> <div data-options="region:'north',title:'顶部',sp ...
- 09 web开发高级应用(1)
- 1 <base> 标签用法 ```base: 为页面上的所有链接规定默认地址或默认目标target: 跳转到的目标页 <base target=_blank> <!- ...
- 浅谈cssText
给一个HTML元素设置css属性,如 var head= document.getElementById("head"); head.style.width = "200 ...