設計模式GOF23 抽象工廠模式

2021-07-15 20:15:11 字數 1794 閱讀 1952

抽象工廠模式(abstract factory)是建立者模式的一種,是一種負責建立物件的模式。

抽象工廠算是工廠模式的一種,因為邏輯和實現相對複雜一些,所以在設計模式中不少說明都是分開說明的。

抽象工廠也是為了實現物件建立和物件使用的分離。工廠模式雖然已經實現了這一需求,但是還是不夠徹底。比如:如果建立的物件不是乙個物件,而已一系列物件的時候,普通的工廠模式就會無能為力了。這個時候就需要抽象工廠模式。

簡而言之,抽象工廠模式的職責是建立產品族和使用產品族的分離。是工廠模式的一種特殊情況。

建立乙個工廠物件的抽象類,定義產品族的基本資訊和方法,將產品族的建立封裝在實現類的相應方法中。對於物件的建立和管理,可以使用相應類的抽象介面來實現。

抽象工廠不可以增加產品,但可以增加產品族。

//引擎介面,汽車產品族的物件之一

public

inte***ce

engine

//豪華版引擎類

public

class

luxuryengine

implements

engine

}//低端版引擎類

public

class

lowengine

implements

engine

}public

inte***ce

seat

//豪華版車座類

public

class

luxuryseat

implements

seat

}//低端版車座類

public

class

lowseat

implements

seat

}//奢侈版汽車的建立類,實現奢侈版汽車的建立

public

class

luxurycar

implements

ca***ctory

//奢侈版汽車的車座建立

public seat createseat()

}//低端版汽車的建立類,實現低端版汽車的建立

public

class

luxurycar

implements

ca***ctory

//低端版汽車的車座建立

public seat createseat()

}

低端版和奢侈版算是兩種不同的產品組,通過對建立工廠的抽象,使得不同的產品組的編寫變得容易一些。

類似的一套產品的建立和更換可以用抽象工廠方式來做到,比如類似qq空間換**,可以通過抽象工廠模式變得容易些。

簡單工廠模式適合建立物件但擴充套件的話不符合開閉原則。

工廠模式符合開閉原則,但是會建立過多的類。

抽象工廠模式是對產品族的建立和控制分離的特殊狀況的工廠模式。

工廠模式在實際應用中一般不會單獨出現,往往會和其他的方式結合起來。

工廠模式的一些應用場景:

1. jdk中calendar的getinstance方法

2. jdbc中connection物件的獲取。

3. hibernate中sessionfactory建立session。

4. spring中ioc容器建立管理bean物件。

5. xml解析時documentbulide***ctory建立解析物件。

6. 反射中class物件的newinstance

其實工廠模式的應用還是比較廣泛的,一般一些需要建立***factory的都屬於工廠模式。

設計模式GOF23 工廠模式

簡單工廠模式 static factory method 是建立者模式的一種,是負責建立物件的模式。工廠模式是為了實現建立物件和呼叫物件分離的需求。簡單工廠用來生產同一等級結構中的任意產品。對於新增的產品需要修改已有 工廠方法模式用來生產同意等級結構中的固定產品。支援增加任意產品 抽象工廠模式用來生...

GOF23 設計模式 之工廠模式

工廠模式本質 例項化物件,工廠方法代替new操作 將實現類和建立物件統一管理和控制,將呼叫者和實現類解耦 工廠模式分為了三種 1,簡單工廠模式 最常用 對於新增產品 要修改 2,工廠方法模式 新增產品不用修改 複雜度高 3,抽象工廠模式 可以增加產品族,進行產品之間的搭配 一般用的少,框架可能會用到...

GOF23設計模式之抽象工廠模式的實現

package com.bjsxt.cn.abstractfactory public inte ce engineclass luxuryengine implements engine override public void start class lowengine implements e...