工廠設計模式算是經常在專案中使用的設計模式,屬於建立型模式,可以理解為建立物件的設計模式。
應用場景:根據業務情況需建立不同型別的物件,且物件又存在相似的業務邏輯,此時需要將建立物件的責任交由工廠類,工廠類會基於輸入建立物件。(該場景是根據自己的理解)
在查閱資料時看到有人講工廠設計模式分為三類,簡單工廠,工廠方法,抽象工廠,結合開發經驗而言,簡單工廠和抽象工廠是我使用較多的模式,所以本文僅著墨於此。
文中的**庫:
模組位置:design模組的com.coline.design.factory包中
簡單工廠模式就是我們平時使用最多的模式,假設我們專案需要小公尺手機和華為手機兩種手機,手機需要選擇cpu和螢幕型號,首先我們有乙個手機型別的介面phonetype (其實這裡涉及到了模板涉及模式,也是jdk中使用較多的設計模式)
package com.coline.design.factory.simplyway.intf;
/** * @author coline
* @description 手機型別介面類
*/public inte***ce phonetype
新建小公尺手機類和華為手機類並實現phonetype ,如下:
package com.coline.design.factory.simplyway.imp;
import com.coline.design.factory.simplyway.intf.phonetype;
/** * @author coline
* @description 小公尺產品,繼承phonetype介面
*/public class xiaomi implements phonetype
@override
public void screen()
}
package com.coline.design.factory.simplyway.imp;
import com.coline.design.factory.simplyway.intf.phonetype;
/** * @author coline
* @description 華為產品,繼承phonetype介面
*/public class huawei implements phonetype
@override
public void screen()
}
如果不使用工廠設計模式,那麼我們會在專案中的各個位置到處new這兩個實現類,**會顯得不優雅,丟失了程式設計師的尊嚴。所以我們可以將新建物件的職責交由工廠類來完成,**如下:
package com.coline.design.factory.simplyway;
import com.coline.design.factory.simplyway.imp.huawei;
import com.coline.design.factory.simplyway.imp.xiaomi;
import org.junit.test;
/** * 簡單的工廠模式
抽象工廠是為了應對更加複雜的業務情況,業務更便於擴充套件,主要設計思想是以業務屬性為維度,將**邏輯上移至業務屬性,方便批量處理。
業務場景:假設還是小公尺手機和華為手機的場景,手機廠商會根據戰略目標選擇不同的cpu和螢幕來滿足不同層級的需求,因此可以將cpu和螢幕理解為與手機本身為配件和整體的關係,所以首先我們有cpu的介面類,螢幕的介面類用於規範有哪些cpu和螢幕型號,**如下:
package com.coline.design.factory.abstractway.intf;
/** * @author coline
* @classname cpu
* @date 2020/2/2 0:03
* @description cpu工廠
*/public inte***ce cpu
}/**
* @classname cpu950
* @date 2020/2/2 0:32
* @description cpu950
*/class cpu950 implements cpu }}
package com.coline.design.factory.abstractway.intf;
/** * @author coline
* @classname screen
* @date 2020/2/2 0:11
* @description 螢幕工廠
*/public inte***ce screen
}/**
* @classname screen6
* @date 2020/2/2 0:33
* @description screen6
*/class screen6 implements screen }}
同時我們需要乙個手機的工廠介面類用於規範手機的組成,**如下:
package com.coline.design.factory.abstractway.intf;
/** * @author coline
* @classname phonefactory
* @date 2020/2/2 0:27
* @description 手機工廠
*/public inte***ce phonefactory
而後,我們根據業務需求,新建具體的手機類並實現手機工廠介面phonefactory
package com.coline.design.factory.abstractway.imp;
import com.coline.design.factory.abstractway.intf.cpu;
import com.coline.design.factory.abstractway.intf.phonefactory;
import com.coline.design.factory.abstractway.intf.screen;
/** * @author coline
* @classname xiaomi
* @date 2020/2/2 0:36
* @description 小公尺手機,cpu850,螢幕5寸
*/public class xiaomi implements phonefactory
@override
public void getscreen()
}
package com.coline.design.factory.abstractway.imp;
import com.coline.design.factory.abstractway.intf.cpu;
import com.coline.design.factory.abstractway.intf.phonefactory;
import com.coline.design.factory.abstractway.intf.screen;
/** * @author coline
* @classname huawei
* @date 2020/2/2 0:38
* @description 華為手機cpu950,螢幕6寸
*/public class huawei implements phonefactory
@override
public void getscreen()
}
**邏輯就此完成,測試類如下:
package com.coline.design.factory.abstractway;
import com.coline.design.factory.abstractway.imp.huawei;
import com.coline.design.factory.abstractway.imp.xiaomi;
import org.junit.test;
/** * @author coline
* @classname createphonetest
* @date 2020/2/2 0:39
* @description 抽象工廠模式測試類
*/public class createphonetest
}
測試結果如下:
一起來讀《遊戲設計夢工廠》
什麼給予了玩家上述元素的意義?什麼是謎題?總結一起來讀 遊戲設計夢工廠 使用正規元素 在設計遊戲時,需要詢問自己一些關於目標的問題 遊戲學者對目標進行了一些分類 資源型別 衝突邊界 結果一起來讀 遊戲設計夢工廠 運用戲劇元素 在遊戲的結構方面,主要有以下幾個元素。遊戲最明顯的相同點就是它們都是為玩家...
一起來學習Ant Design
當然,都屬於webpack中的基礎知識,但是套上了atool build這樣乙個殼子,又有點小懵。還好不是很難,嘗試後,很快搞定了,順手也總結一下吧!一 安裝ant init 1 npm install antd init g 二 建立目錄 1 mkdir antd demo cd antd dem...
一起來學設計模式(2) 簡單工廠模式
其實,在gof的23種設計模式中,並沒有簡單工廠模式這種說法,為了和工廠模式 抽象工廠模式逐一對比,我們還是先從簡單工廠模式說起。工廠 即用來生產 產品 考慮以下需求 我需要通過乙個類來建立乙個蘋果,或者是建立乙個梨,或者是建立乙個。在上邊的需求中,這個可以建立蘋果 梨 香蕉的類即為簡單工廠類。同時...