Java設計模式之 簡單工廠模式,簡單易於理解

簡單工廠模式:

一、 概念

簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解爲是不同工廠模式的一個特殊實現。

具體分類
1. 工廠(Creator)角色 簡單工廠模式的核心,
它負責實現創建所有實例的內部邏輯。工廠類可以被外界直接調 用,創建所需的產品對象。
2. 抽象(Product)角色
簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
3. 具體產品(ConcreteProduct)角色
簡單工廠模式所創建的具體實例對象

二、代碼
1、創建一個接口 生產水果
在這裏插入圖片描述
2、創建兩個具體對象,蘋果和梨
在這裏插入圖片描述
在這裏插入圖片描述
3、創建一個測試類
(1 第一種測試方法,new一個對象
在這裏插入圖片描述
(2 第二種測試方法 使用接口實現多態
在這裏插入圖片描述
4、現在進入簡單工廠模式
首先創建一個工廠類 fruitfactory.Java
(1 、第一種 簡單工廠
在這裏插入圖片描述
調用測試
在這裏插入圖片描述
由上面地址發現,每次調用都會更新再調用
現在把簡單工廠方法換成靜態的
在這裏插入圖片描述
測試一下:
在這裏插入圖片描述
好像沒什麼變化,一樣是更新了,但是,靜態和非靜態是有區別的,下面是我查到的區別

static方法可以通過類名訪問,也可以通過類的實例訪問。
static方法不能訪問類中非static的數據。
比如
class A
{
static void F(){}
};
在main函數中可以
A a;
a.F();
也可以
A.F();
普通方法又叫實例方法,只能通過類的實例訪問。
他只能a.F();
一個JAVA類被加載的順序:
1.加載靜態成員、代碼塊
2.加載非靜態成員、代碼塊
3.調用構造方法。

原文鏈接:https://blog.csdn.net/xiaoshe200/article/details/6181341

(2、通用的工廠方法,通過相關的名稱就能返回
在這裏插入圖片描述
測試一下:
在這裏插入圖片描述
三、優缺點
簡單工廠有以下優點。

幫助封裝
簡單工廠雖然很簡單,但是非常友好地幫助我們實現了組件的封裝,然後讓組件外部能真正面向接口編程。

解耦

通過簡單工廠,實現了客戶端和具體實現類的解耦。
如同上面的例子,客戶端根本就不知道具體是由誰來實現,也不知道具體是如何實現的,客戶端只是通過工廠獲取它需要的接口對象。

簡單工廠有以下缺點。

可能增加客戶端的複雜度
如果通過客戶端的參數來選擇具體的實現類,那麼就必須讓客戶端能理解各個參數所代表的具體功能和含義,這樣會增加客戶端使用的難度,也部分暴露了內部實現,這種情況可以選用可配置的方式來實現。

不方便擴展子工廠

私有化簡單工廠的構造方法,使用靜態方法來創建接口,也就不能通過寫簡單工廠類的子類來
改變創建接口的方法的行爲了。不過,通常情況下是不需要爲簡單工廠創建子類的。

簡單來說就是耦合度比較低,下面解上面的例子,增加一個對象香蕉
增加對象香蕉:
在這裏插入圖片描述
工廠要改變
在這裏插入圖片描述
測試類
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章