23種設計模式之 工廠設計模式

2021-09-11 07:17:31 字數 3026 閱讀 8833

前言:記得大二時上過一門設計模式的課,當時聽的那叫乙個懵逼。。如今工作半年了,想把東西再撿起來,順便記錄一下。。工廠模式是平時接觸的多一點的,就從工廠模式開始吧…

什麼是工廠設計模式?

工廠設計模式,顧名思義,就是用來生產物件的,是一種建立型設計模式。在物件導向語言中,萬物皆物件,這些物件都需要建立,如果建立的時候直接new該物件,就會對該物件耦合嚴重,假如我們要更換物件,所有new物件的地方都需要修改一遍,這顯然違背了軟體設計的開閉原則,如果我們使用工廠來生產物件,我們就只和工廠打交道就可以了,徹底和物件解耦,如果要更換物件,直接在工廠裡更換該物件即可,達到了與物件解耦的目的;所以說,工廠模式最大的優點就是:解耦

工廠模式又包含三種:

簡單工廠設計模式

定義:乙個工廠方法,生存某類的物件。

角色:抽象產品具體產品具體工廠產品使用者

工廠模式是用來建立某一類物件的工廠,因此需要首先抽象產品,比如蘋果,橘子都屬於水果,因此我們可以先抽象出乙個水果類,再定義乙個水果工廠,用來生產不同的水果

水果介面:

public

inte***ce

fruit

具體類:蘋果或者橘子

public

class

@override

void

eat()}

public

class

orange implement fruit

}

具體工廠:水果工廠類

public

class

fruitfactory

}}

產品使用:

createfruit()

;eat()

;// 蘋果被吃了

以上就是簡單工廠模式,其思想就是將類的建立交個工廠,當需要某個類時,從工廠裡取。簡單工廠模式雖然簡單,但有其弊端,就是當我需要生產一種新的水果產品,需要修改工廠,這顯然違反了六大設計原則的開閉原則。

為解決該問題我們介紹第二種工廠模式:

工廠方法設計模式

定義:將工廠提取成乙個介面或抽象類,具體生產什麼產品由子類決定;

角色:抽象產品具體產品抽象工廠具體工廠

和簡單工廠類一樣,我們需要將產品抽象出來,還用水果類,這次我們將工廠也抽象出來,具體生產什麼由子類決定:

省略水果介面,蘋果類,橘子類。。。

工廠介面

public

inte***ce

fruitfactory

蘋果工廠

fruitfactory

}// 橘子工廠

public orangefactory implements

fruitfactory

}使用產品

new();

createfruit()

;以上這種方式,雖然解耦了,也遵循了開閉原則,但是問題根本還是沒有解決啊,換湯沒換藥,如果我需要的產品很多的話,需要建立非常多的工廠,所以這種方式的缺點也很明顯;於是我們再來看最後一種工廠模式:

抽象工廠設計模式

抽象產品具體產品抽象工廠具體工廠

抽象工廠和工廠方法的模式基本一樣,區別在於,工廠方法是生產乙個具體的產品,而抽象工廠可以用來生產一組相同,有相對關係的產品;重點在於一組,一批,一系列;舉個例子,假如生產小公尺手機(一不小心就給小公尺打了個廣告~),小公尺手機有很多系列,小公尺note、紅公尺note等;假如小公尺note生產需要的配件有825的處理器,6英吋螢幕,而紅公尺只需要650的處理器和5寸的螢幕就可以了;用抽象工廠來實現:

cpu介面和實現類

public

inte***ce

cpu}

class

cpu825

implements

cpu}

}

螢幕介面和實現類

public

inte***ce

screen

}class

screen6

implements

screen

}}

工廠介面

public

inte***ce

phonefactory

具體工廠實現類:小公尺手機工廠類

public

class

xiaomifactory

implements

phonefactory

@override

public screen getscreen()

}

具體工廠實現類:紅公尺手機工廠類

public

class

hongmifactory

implements

phonefactory

@override

public screen getscreen()

}

現在可以在兩種cpu和兩種螢幕任意組合,得到相應效能的手機,以上例子可以看出,抽象工廠可以解決一系列的產品生產的需求,對於大批量,多系列的產品,用抽象工廠可以更好的管理和擴充套件;

總結1、對於簡單工廠和工廠方法來說,兩者的使用方式實際上是一樣的,如果對於產品的分類和名稱是確定的,數量是相對固定的,推薦使用簡單工廠模式;

2、抽象工廠用來解決相對複雜的問題,適用於一系列、大批量的物件生產;

23種設計模式之 工廠模式

android中,工廠模式分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式。一.簡單工廠模式。定義 簡單工廠模式又叫靜態方法模式 因為工廠類定義了乙個靜態方法 簡單工廠模式可以理解為負責生產物件的乙個類,稱為 工廠類 我們主要講的就是簡單工廠模式,其他兩種也是簡單工廠模式的衍生 我們在專案中經常使...

23種設計模式之工廠模式

基本介紹 簡單工廠模式定義了乙個工廠類,他可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類,簡單工廠模式中用於被建立例項的方法通常為靜態 static 方法,因此簡單工廠模式又被成為靜態工廠方法 特點需要什麼,只需要傳入乙個正確的引數,就可以獲取所需要的物件,而無需知道其實現過程...

23種設計模式 工廠模式

作用 實現了建立者和呼叫者分離 詳細分類 簡單工廠模式 工廠方法模式 抽象工廠模式 工廠模式要滿足的原則 開閉原則 對擴充套件開放,對修改關閉 依賴倒置原則 面向介面程式設計,不要面向實現程式設計。迪公尺特法則 只與你的直接朋友交談,不跟陌生人說話。核心本質 例項化物件不適用new,用工廠方法代替 ...