java設計模式 簡單工廠模式

2021-08-22 14:48:29 字數 2315 閱讀 4927

簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式。通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

1.工廠(creator)角色簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。

2.抽象(product)角色簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

3.具體產品(concrete product)角色簡單工廠模式所建立的具體例項物件

sports:抽象角色

basketball和football:具體產品角色

sportsfactory:工廠角色

這個例子,用運動作為抽象角色,足球和籃球作為具體的產品角色來講解,下面看具體**。

首先我們建立乙個抽象類sports,同時有乙個運動的方法

public inte***ce sports
然後,定義了乙個足球類籃球類,同樣有運動方法

public class basketball implements sports

}

public class football implements sports

}

最後寫乙個工廠類,用來創造足球運動籃球運動

這裡建立的方式有很多種方式,我們從簡單的開始,逐步優化**。

4.1、單獨建立例項方法

public class sportsfactory 

/** 獲得football類例項

*/public static sports getfootball()

}

這種方法,直接用兩個不同的方法直接建立兩個例項物件。

4.2、邏輯判斷的方式

public class sportsfactory  else if(type.equalsignorecase("football"))  else }}

先傳入乙個型別引數,然後判斷,再用反射的方式返回物件。

前面這兩種方式都不是最優的方式,因為他們都違背了開閉原則

開閉原則定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。

開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的**能不動則不動。這個原則有兩個特性,乙個是說「對於擴充套件是開放的」,另乙個是說「對於更改是封閉的」。面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。這就是「開放-封閉原則」的精神所在。

下面,我們再優化一下。

4.3、反射實現方式

public class sportsfactory 

}

這種方法,通過反射的方式實現,不管我們還需要擴充套件什麼其他功能都不用再更改這個工廠類的**了,所以就符合開閉原則了。

public class mainclass 

}

執行結果:**優點:**工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責「消費」物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體系結構的優化

缺點:由於工廠類集中了所有例項的建立邏輯,違反了開閉原則,將全部建立邏輯集中到了乙個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同例項的需求.這種對條件的判斷和對具體產品型別的判斷交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利;

java設計模式 簡單工廠模式

大話設計模式 第一章 package ch01 public abstract class operation public void setnumbera double numbera public double getnumberb public void setnumberb double n...

java設計模式 簡單工廠模式

簡單工廠模式 所謂的工廠模式就是用乙個類專門來建立物件,建立的類有共同的父類。簡單工廠模式的實質是建立乙個工廠類的方法,通過其引數傳入要建立的類。然後將其建立出來。在簡單工廠模式中,工廠類是整個模式的關鍵,其包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟建立哪個類的例項,外界可以不用去關注物件...

java設計模式 簡單工廠模式

1.工廠模式 實現建立者和呼叫者分離。2.分類 1 簡單工廠模式 靜態工廠模式 用來生產同一等級結構中的任意產品。對於新增的產品,需要修改已有的 2 工廠方法模式 用來生產同一等級結構中的的固定產品。支援增加任意產品 3 抽象工廠模式 用來生產不同產品族的全部產品。對於增加新的產品,無能為力 支援增...