成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

設計模式系列-抽象工廠模式

開發 前端
抽象工廠提供了一個創建一系列相關或相互依賴對象的接口,而無需指定他們具體的類。簡單來說是為需要創建多個相關聯產品的場景提供了解決思路。

 [[426616]]

本文轉載自微信公眾號「花括號MC」,作者花括號MC。轉載本文請聯系花括號MC公眾號。

抽象工廠提供了一個創建一系列相關或相互依賴對象的接口,而無需指定他們具體的類。簡單來說是為需要創建多個相關聯產品的場景提供了解決思路。

舉個例子

很多軟件都支持配置不同的顏色的主題,當切換主題時,所有按鈕樣式和顏色都會統一切換。

假設我們的軟件只有三類按鈕,分別是Button, TextField,以及ComboBox,并且我們的軟件只提供兩類主題,即紅色主題和綠色主題。

來看一下UML :

再來看一下具體代碼如何實現。

先來創建一個SkinFactory接口

  1. public interface SkinFactory { 
  2.     Button createButton(); 
  3.     TextField createTextField(); 
  4.     ComboBox createComboBox(); 

通過實現SkinFactory實現綠色主題工廠

  1. //紅色主題工廠 
  2. public class RedSkinFactory implements SkinFactory { 
  3.  
  4.     @Override 
  5.     public Button createButton() { 
  6.         return new RedButton(); 
  7.     } 
  8.  
  9.     @Override 
  10.     public TextField createTextField() { 
  11.         return new RedTextField(); 
  12.     } 
  13.  
  14.     @Override 
  15.     public ComboBox createComboBox() { 
  16.         return new RedComboBox(); 
  17.     } 

紅色主題工廠類類似,因為篇幅原因不在單獨列出。

來看一下客戶端如何使用

  1. public class Client { 
  2.     public static void main(String[] args){ 
  3.         //通過切換不同工廠,可以達到所有按鈕顏色都變換的效果 
  4.         SkinFactory skinFactory = new RedSkinFactory(); 
  5.         Button button = skinFactory.createButton(); 
  6.         ComboBox comboBox = skinFactory.createComboBox(); 
  7.         TextField textField = skinFactory.createTextField(); 
  8.  
  9.         button.display(); 
  10.         comboBox.display(); 
  11.         textField.display(); 
  12.     } 

總結

抽象工廠是創建模式之一,抽象工廠適合創建一系列有相關性的多個產品,雖然抽象工廠在擴展一個主題的按鈕時靈活方便,但是也有一定缺點, 最大缺點就是想單獨增加一個不屬于任何主題的按鈕時比較麻煩,比如上面的例子中,如果想增加一個關閉按鈕,這個按鈕即不屬于紅色主題也不屬于綠主題,那么改動起來就比較復雜。

工廠模式三兄弟:簡單工廠適合邏輯簡單,創建產品數量很少的場景,工廠模式適合創建獨立的產品,抽象工廠適合創建一系列有相關性的多個產品。

 

責任編輯:武曉燕 來源: 花括號MC
相關推薦

2020-10-19 09:28:00

抽象工廠模式

2022-01-12 13:33:25

工廠模式設計

2021-03-06 22:50:58

設計模式抽象

2009-01-15 10:55:29

JavaScript設計模式抽象工廠

2011-07-28 09:50:58

設計模式

2020-12-17 09:38:16

設計模式參數

2013-11-26 16:29:22

Android設計模式

2024-03-06 13:19:19

工廠模式Python函數

2024-09-14 08:24:44

設計模式抽象工廠模式JDK

2020-08-21 07:23:50

工廠模式設計

2011-11-17 16:03:05

Java工廠模式Clojure

2020-09-14 17:26:48

抽象工廠模式

2021-07-06 08:59:18

抽象工廠模式

2010-04-19 09:30:00

工廠模式PHP設計模式

2023-08-07 06:30:15

抽象工廠模式軟件設計模式

2020-11-04 08:54:54

狀態模式

2020-11-03 13:05:18

命令模式

2020-10-23 09:40:26

設計模式

2010-10-09 09:25:35

Python工廠模式

2024-07-31 08:12:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲伊人久久综合 | 中文字幕亚洲欧美日韩在线不卡 | 一区二区三区日韩 | 美国黄色一级片 | 亚洲国产一区视频 | 无人区国产成人久久三区 | 成年人视频在线免费观看 | 91精品久久久久久久久 | 国产亚洲精品区 | 亚洲精品永久免费 | 亚洲在线免费观看 | 国内自拍真实伦在线观看 | 亚洲精品久久久久久国产精华液 | 亚洲精品电影在线观看 | 亚洲综合精品 | 成人免费观看网站 | 草草在线观看 | 日韩免费一区二区 | 欧美aⅴ| 国产精品毛片久久久久久久 | 成人在线视频一区 | 国产精品亚洲一区 | 色婷婷国产精品综合在线观看 | 国产日韩欧美一区 | 日韩精品久久一区二区三区 | 欧美在线a | 亚洲国产成人精品久久久国产成人一区 | 国产在线精品一区二区三区 | 国产精品久久久久久久7777 | 鸡毛片| wwwsihu| 九色综合网 | 成人久久久 | 国产精品久久久久婷婷二区次 | 国产在线h | 欧美自拍一区 | 国产精品久久久久久av公交车 | 99精品视频免费在线观看 | 91精品国产91久久久久久吃药 | 久久这里只有精品首页 | 美日韩一区二区 |