設計模式之 理解三種工廠模式原理

2021-10-11 03:09:31 字數 2739 閱讀 8347

首先網上的各種理論感覺沒有那麼好理解,每個部落格的術語也都千奇百怪,直接通過**演示最直接,最好理解,然後你再想去看理論,就輕鬆的很了。核心思想就是:代替原來的new物件的方式,通過工廠去生成,看起來不是new而已。

(1) 簡單工廠模式( 靜態工廠模式 )

在簡單工廠模式中可以根據引數的不同返回不同的例項,這種方式最簡單,只是進行了簡單的封裝,平時咱們也都用過類似的思想

步驟:定義規範介面類或父類 -> 子類實現 ->建立工廠類 ->over

public

inte***ce

car

public

class

aodicar

implements

car@override

public

void

make()

}

public

class

baomacar

implements

car@override

public

void

make()

}

public

class

ca***ctoryif(

"aodi"

.equals

(type)

)return null;

}}

public

class

testfactory

}

是不是簡單得很?既然有了這種工廠模式,為啥還會有下邊的工廠方法模式呢??

這就要從開閉原則說起了:官方術語我就不copy了,簡單來說就是我現在要新加乙個(特斯拉車)實現類,不要修改原來的邏輯。簡單工廠模式這種就需要再ca***ctory類中新新增 if else 進行判斷。

因此引出下邊這種工廠模式…

(2)工廠方法模式

簡單來說。改進點就是每乙個實現類都對應乙個單獨的工廠,a->afactory,b->bfactory

car、aodicar、baomacar類保持不變

public

inte***ce

abstractfactory

public

class

aodica***ctory

implements

abstractfactory

}

public

class

baomaca***ctory

implements

abstractfactory

}

-------------end----------------

使用方法:

public

class

testfactory

}

這種方式要是新增(特斯拉)實現類,只需要建立單獨的工廠,對之前的業務**不會嵌入。第一種存在的問題解決,同時會發現模擬第一種工廠模式多,結構也會更複雜。所以不存在絕對的哪種方式好,適合自己專案的就是好的,選的時候也不需要太糾結,各有各的好處。

個人感覺這種抽象工廠模式和工廠方法模式的界限不是很清楚,兩者在**結構上簡單一變就會變成另一種模式。工廠方法模式針對的是一類產品,比如就是生產手機。而抽象工廠模式針對的是乙個產品組,比如寶馬,我既要生產車,又要生產手錶等其他產品。

public

inte***ce

watch

public

class

aodiwatch

implements

watch

@override

public

void

makewatch()

}

public

class

baomawatch

implements

watch

@override

public

void

makewatch()

}

public

inte***ce

abstractfactory

使用方法:

public

class

testfactory

}

結束:

其實能看的出來抽象工廠模式和工廠方法模式差別不大的,抽象工廠模式新增乙個其他型別的產品也需要修改之前的工廠邏輯的。a公司有1,2,3這三種產品,b公司也有1,2,3三種,這樣的比較適合使用抽象工廠。單一產品的話就選擇工廠方法模式或者簡單工廠模式。。還是那句話不要侷限說是那種模式,靈活運用這種思想即可。

java設計模式 三種工廠模式

工廠模式提供建立物件的介面。工廠模式分為三類 簡單工廠模式 factory 工廠方法模式 factory method 和抽象工廠模式 abstract factory gof在 設計模式 中將工廠模式分為兩類 工廠方法模式 factory method 和抽象工廠模式 abstract facto...

Java三種工廠設計模式

乙個栗子 我喜歡吃麵條,抽象 乙個麵條基類 介面也可以 這是產品的抽象類。public abstract class inoodles 程式設計師加班必備也要吃泡麵 具體的產品類 public class paonoodles extends inoodles還有我最愛吃的家鄉的幹扣面 具體的產品類...

三種工廠的設計模式

二 三種設計模式的uml類圖 三 三種設計模式的源 四 總結分析 例項化物件的時候不再使用 new object 形式,可以根據使用者的選只需要給出具體 例項的描述給工廠,工廠就會自動返回具體的例項物件。擇條件來例項化相關的類。對於客戶端來說,去除了具體的類的依賴。工廠方法模式是對簡單工廠模式進一步...