java23種設計模式(二)抽象工廠模式
- 2019 年 10 月 21 日
- 筆記
我們接着上一章的工廠方法模式繼續學習一下抽象工廠模式。
抽象工廠模式:在工廠模式中,如果有多個產品,則就是抽象工廠模式。
例子:
有一個工廠開了兩個子公司,專門用來生產電腦配件鍵盤和鼠標,一個是聯想工廠則生產聯想的產品,另一個是宏碁工廠則生產宏碁的產品。
代碼如下:
1、工廠接口(可以生產鼠標和鍵盤)
public interface Factory { // 生產鼠標 Mouse createMouse(); // 生產鍵盤 KeyBoard createKeyBoard(); }
2、聯想工廠(生產聯想鼠標和鍵盤)
public class LenovoFactory implements Factory { @Override public Mouse createMouse() { return new LenovoMouse(); } @Override public KeyBoard createKeyBoard() { return new LenovoKeyBoard(); } }
3、宏碁工廠(生產宏碁鼠標和鍵盤)
public class AcerFactory implements Factory { @Override public Mouse createMouse() { return new AcerMouse(); } @Override public KeyBoard createKeyBoard() { return new AcerKeyBoard(); } }
4、鍵盤接口
public interface KeyBoard { void getName(); }
5、聯想鍵盤實現類
public class LenovoKeyBoard implements KeyBoard { @Override public void getName() { System.out.println("這個是聯想鍵盤"); } }
6、宏碁鍵盤實現類
public class AcerKeyBoard implements KeyBoard { @Override public void getName() { System.out.println("這個是宏碁鍵盤"); } }
7、鼠標接口
public interface Mouse { void getName(); }
8、聯想鼠標接口
public class LenovoMouse implements Mouse { @Override public void getName() { System.out.println("這個是聯想鼠標"); } }
9、宏碁鼠標接口
public class AcerMouse implements Mouse { @Override public void getName() { System.out.println("這個是宏碁鼠標"); } }
10、客戶端(可以在聯想工廠買聯想鼠標和鍵盤,也可以在宏碁工廠買宏碁生產的鼠標和鍵盤)
@SpringBootTest class FactoryApplicationTests { @Test void abstractF(){ LenovoFactory lenovoFactory = new LenovoFactory(); lenovoFactory.createKeyBoard().getName(); lenovoFactory.createMouse().getName(); AcerFactory acerFactory = new AcerFactory(); acerFactory.createKeyBoard().getName(); acerFactory.createMouse().getName(); } }
總結:
(1)增加xx工廠:創建xx工廠,繼承工廠接口,然後創建xx鼠標繼承鼠標接口,創建xx鍵盤繼承鍵盤接口即可。
(2)增加音響產品:首先創建音響接口,然後分別創建聯想音響和宏碁音響實現類實現音響接口。然後再工廠接口中增加創建音響的方法,在聯想工廠和宏碁工廠分別實現自家音響的創建。
如果文章對您有幫助,請記得點贊關注喲~
歡迎大家關注我的公眾號<情系IT>,每日技術推送文章供大家學習參考。