一文帶你學會「工廠方法模式」,不會你揍我

2021-10-08 09:17:01 字數 2401 閱讀 5433

先讚再看,多好的習慣。

今天,咱們還拿「汽車廠開發生產汽車軟體」這個案例進行講解。

一開始,汽車廠剛剛起步,名聲不大,銷售額也有限,老闆也就只生產國產車,此時我們設計的生產汽車軟體,使用「簡單工廠模式」還是可以滿足需求的。但是隨著企業的發展,產業的擴大,老闆不再滿足只製造國產車,進一步開始涉足合資車。在實際需求的驅使下,我們此時需要開設分公司,來生產合資車。

作為老闆,為了方便管理,那麼肯定要對公司的整體架構進行重建。建立「總公司」,再開設生產不同汽車的「分公司」,這樣方便進行統一管理。此時我們通過「簡單工廠模式」設計的軟體將不再適用於這種模式。

為適應新的需求,我們要採用新的模式:「工廠方法模式」。

定義乙個建立物件的抽象方法,然後將物件的例項化推遲到子類,由子類決定要例項化的類。

通過這簡單的文字描述,可能無法對「工廠方法模式」具有深入的了解。為此我編寫了下列示例**,以便大家加深對該模式的認知。

第一步:初始化各種車輛類。

定義生產車輛的抽象類

public

abstract

class

vehicle

定義實現該抽象類的子類

/**

* 國產轎車

*/public

class

domesticcar

extends

vehicle

}/**

* 國產suv

*/public

class

domesticsuv

extends

vehicle

}/**

* 國產貨車

*/public

class

domestictruck

extends

vehicle

}/**

* 合資轎車

*/public

class

jointventurecar

extends

vehicle

}/**

* 合資suv

*/public

class

jointventuresuv

extends

vehicle

}/**

* 合資貨車

*/public

class

jointventuretruck

extends

vehicle

}

第二步:定義乙個建立物件的抽象方法(老闆的總公司)。

public

abstract

class

factory

第三步:將物件的例項化推遲到子類(總公司下的子公司)。

/**

* 生產國產車的工廠

*/public

class

domesticfactory

extends

factory

return vehicle;}}

/** * 生產合資車的工廠

*/public

class

jointventurefactory

extends

factory

return vehicle;

}}

第四步定義測試類:

public

class

demo

}

總結:

相對於「簡單工廠模式」而言,「工廠方法模式」遵守了ocp原則。當增加新的產品時,只需要新增具體的產品子類和其對應的工廠類即可,不用修改原有的**。並且該模式更利於程式的擴充套件和維護。

今天的分享就到這裡了,如果感覺「菜鳥」寫的文章還不錯,記得點讚加關注呦!你們的支援就是我堅持下去的動力。文章**寫的有問題的也希望大家可以指出,我會虛心受教。

一文帶你學會「外觀模式」,不會你找我

外觀模式也叫做 過程模式 該模式的核心思想是為不同子系統 類 中的一組介面提供乙個一致的介面 類 也就是定義乙個高層次的類,該類封裝了一些低層次的類和其方法,客戶端使用時就用該類。通過外觀模式可以遮蔽子系統中的細節,促使呼叫端只需要跟高層次的類發生關係即可,無需再關注子系統的內部實現細節。外觀模式還...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...

工廠方法模式(一)

簡單工廠模式固然好用,但是也存在很多缺點。由於建立物件是靜態的,而且工廠是公共的,並且存在判斷邏輯,當類多了以後,會造成 的冗餘,不利於擴充套件,每次擴充套件,都需要修改工廠類中的判斷邏輯,不符合 開閉原則 基於這種現狀,引申出工廠方法模式。工廠方法有如下幾個概念,分別是 抽象產品 product ...