1. 程式人生 > >設計模式的學習--(4)抽象工廠模式

設計模式的學習--(4)抽象工廠模式

抽象工廠模式 –產品族的建立

抽線工廠模式的定義:提供一個建立一系列相關或相互依賴物件的介面,而無須指定他們具體的類。抽象工廠模式又稱為Kit模式,它是一種物件建立型模式。和工廠方法模式不同的地方在於抽象工廠模式是提供了建立一系列類的例項的工廠方法。
還是拿製造汽車來舉例子:某汽車公司要製造兩款汽車,一款是Mini,一款是Suv,如果利用工廠方法模式來建模的話,可以想象要建立成倍增長的類,顯然不適合,那麼,我們可以用抽象工廠模式來建立:

namespace AbstractFactoryModel
{
    class Program
    {
        static void
Main(string[] args) { IFactory miniFactory=new MiniFactory(); IFactory suvFactory=new SuvFactory(); miniFactory.CreateTyre(); miniFactory.CreateWindow(); suvFactory.CreateTyre(); suvFactory.CreateWindow(); Console.ReadKey(); } } public
interface IFactory//建立工廠模型 { ITyre CreateTyre(); IWindow CreateWindow(); } public interface ITyre//建立輪胎模型 { void Message(); } public interface IWindow//建立車窗模型 { void Message(); } public class MiniFactory : IFactory//建立mini汽車的工廠類 { public
ITyre CreateTyre() { return new MiniTyre(); } public IWindow CreateWindow() { return new MiniWindow(); } } public class SuvFactory:IFactory//建立suv汽車的工廠類 { public ITyre CreateTyre() { return new SuvTyre(); } public IWindow CreateWindow() { return new SuvWindow(); } } public class MiniTyre : ITyre//建立mini汽車的輪胎 { public void Message() { Console.WriteLine("Create a Mini-Tyre"); } } public class MiniWindow : IWindow//建立mini汽車的車窗 { public void Message() { Console.WriteLine("Create Mini-Window"); } } public class SuvTyre : ITyre//建立suv汽車的輪胎 { public void Message() { Console.WriteLine("Create Suv-tyre"); } } public class SuvWindow : IWindow//建立suv汽車的車窗 { public void Message() { Console.WriteLine("Create Suv-Window"); } } }

好處在於,如果我們需要建立一款卡車,那麼我們直接建立一個卡車的factory(同樣整合自IFactory),再建立相應的卡車的零部件類進行製造即可。
缺點在於,如果我們需要建立汽車前圍板或者車門等零部件,那麼我們就得修改原始碼(不滿足開閉原則),在介面中新增相應的方法以及其他實現類中的實現。

相關推薦

設計模式學習--4抽象工廠模式

抽象工廠模式 –產品族的建立 抽線工廠模式的定義:提供一個建立一系列相關或相互依賴物件的介面,而無須指定他們具體的類。抽象工廠模式又稱為Kit模式,它是一種物件建立型模式。和工廠方法模式不同的地方在於抽象工廠模式是提供了建立一系列類的例項的工廠方法。 還是拿

小白設計模式入門4—— 抽象工廠模式

一、引言 從簡單工廠模式->工廠模式->抽象工廠模式,都是為了克服之前的一些缺點而設計的。工廠方法模式具有很好的可擴充套件性,但是一個工廠只建立單個產品這樣的例子很少,常常需要建立多個系列的

設計模式系列11抽象工廠模式

1.概念   抽象工廠模式是所有形態的工廠模式中最為抽象最為一般性的。抽象工廠模式可以向客戶端提供一個介面,使得客戶端在不必指定產品具體型別的情況下,能夠建立多個產品族的產品物件。 備註:工廠模式要麼

設計模式練習3——抽象工廠模式

抽象工廠模式 一、題目: 某軟體公司要推出一款新的手機遊戲軟體,該軟體支援IOS、Android和Windows Phone等多個智慧手機作業系統平臺,針對不同的手機作業系統,該遊戲軟體提供了不同的遊戲操作控制類(OperationController)和

設計模式學習筆記C++實現--抽象工廠模式

1.抽象工廠模式簡介 英文名稱 Abstract Factory 主要目的 該模式定義了一系列相關或者相互依賴物件的介面,而不用指定它們具體的類。 使用場景 1.一個系統需要獨立於它的產品的建立、組合和表示時; 2.一個系統要由多個產品系列中的一個來

c++ 設計模式9 Abstract Factory 抽象工廠模式

構建 數據庫 strac 無需 div exec oracl dfa tle 5.2 抽象工廠模式 動機:在軟件系統中,經常面臨著“一系列相互依賴的對象”的創建工作;同時,由於需求的變化,往往存在更多系列對象的創建工作。 代碼示例: 實現利用數據庫的業務邏輯,支持多數據

設計模式3抽象工廠模式Abstract Factory

開始 line andro 依賴 red 單例 clas 面向接口 抽象工廠方法 設計模式(0)簡單工廠模式 設計模式(1)單例模式(Singleton) 設計模式(2)工廠方法模式(Factory Method) 源碼地址 0 抽象工廠模式簡介 0.0 抽象工廠模式定義

設計模式---抽象工廠模式

ava des 模式 println 5.5 mage test 抽象工廠 urn 1、 簡介:為創建一組相關或相互依賴的對象提供一個接口,無需指定它們的具體類。抽象工廠模式通常是用於創創建一族產品,並且這族產品分不同的等級;不同的具體工廠類生產不同等級的一族產品。 2、

設計模式——抽象工廠模式

運算符 聯合 hashmap nal 消息 main 抽象 code i++ 1.描述 提供一個一系列或相互依賴對象的接口,而無需指定他們具體的類。 2.模式的使用 ·抽象產品(Product):一個抽象類或接口,負責定義具體產品必須實現的方法。 ·具體產品(Concret

磊哥學設計模式抽象工廠模式

抽象工廠 什麼是抽象工廠 抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 在抽象工廠模式中,介面是負責建立一個相關物件的工廠,不需要

設計模式 抽象工廠模式

在有道雲筆記上寫的,抽象工廠模式 http://note.youdao.com/noteshare?id=684ceb68fafe75e7f2b273d0460e8420&sub=0540A1F277B245A494CB02E223440771 抽象工廠模式:提供一個建立一系列相

C#設計模式3——抽象工廠模式

1.抽象工廠模式介紹   上一篇我們瞭解了工廠模式,知道工廠模式可以解決簡單工廠的缺陷(簡單工廠新增新產品時要修改工廠類,不符合開閉原則),但是簡單工廠和工廠模式都是隻生產一種產品(前邊的簡單工廠和工廠都只生產滑鼠),實際上戴爾和惠普公司不僅生產滑鼠還生產鍵盤,為了解決系列產品的問題,就有了抽象工廠模式。我

設計模式 c++版5——抽象工廠模式

定義:為建立一組相關或相互依賴的物件提供一個介面,而且無需指定它們的具體類 示例一:女媧造人擴充套件 造出來黑、白、黃種人,分別有性別分類 類圖說明:一個介面,多個抽象類,N個實現類,每個人種都是一個抽象類,性別是在各個實現類中實現的。 1. 結構說明: HumanF

一個故事貫穿設計模式抽象工廠模式

    包結構:             類結構:                             實現程式碼: package com.automannn.design_mode.abstract_factory.test; import com.

設計模式——抽象工廠模式

前面說了兩種設計模式,簡單工廠模式和工廠模式。簡單工廠模式是定義一個工廠類,工廠類根據呼叫時傳入的引數選擇建立哪一個類的例項。工廠模式是為每個類建立一個工廠,而這些工廠都實現了同一個工廠,客戶端在呼叫的

設計模式十三抽象工廠模式

資料訪問的程式碼?(以“新增使用者”和“得到使用者”為例。) 最基本的資料訪問程式 使用者類, 假設只有ID和Name兩個欄位,其餘省略: class User{ private int _id; public int ID{ get

設計模式C#——抽象工廠模式

推薦閱讀:  我的CSDN  我的部落格園  QQ群:704621321       在工廠模式中,一個工廠只能建立一種產

設計模式5抽象工廠模式

如果 trac 一個 定義 pan 成員 oid c-c 數量 抽象工廠,提供一個工廠接口,用於創建依賴對象的家族,不需要明確指定具體類。可以理解是多個工廠方法的組合。 例如一個款手機是有電池、相機、處理器、屏幕組成的,它其中包含了不同的對象,我們創建時需要創建多個不同類

設計模式解密4- 模板方法模式

編程人員 自己 ack 層次 check target hub 提取 images 1、簡介 定義:一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結構即可重定義該算法中的某些特定步驟。 模板方法模式,一般是為了統一子類的算法實現步驟,所使用

3抽象工廠模式&&簡單工廠+反射改進抽象工廠

reat end ssi 一行代碼 rate imp 缺點 接口 ner 1 抽象工廠?   抽象工廠用在既有產品樹,又有產品族的場合。     產品樹:奔馳旗下的跑車和商務車構成產品樹    產品族:奔馳旗下的跑車與奧迪旗下的跑車構成產品族。/*缺點:此時如果需要增加一個