自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

 [[426616]]

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

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

舉個例子

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

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

來看一下UML :

再來看一下具體代碼如何實現(xiàn)。

先來創(chuàng)建一個SkinFactory接口

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

通過實現(xiàn)SkinFactory實現(xiàn)綠色主題工廠

  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.     } 

總結

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

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

 

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

2020-10-19 09:28:00

抽象工廠模式

2021-03-06 22:50:58

設計模式抽象

2022-01-12 13:33:25

工廠模式設計

2009-01-15 10:55:29

JavaScript設計模式抽象工廠

2011-07-28 09:50:58

設計模式

2013-11-26 16:29:22

Android設計模式

2020-12-17 09:38:16

設計模式參數(shù)

2024-03-06 13:19:19

工廠模式Python函數(shù)

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

抽象工廠模式

2023-08-07 06:30:15

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

2021-07-06 08:59:18

抽象工廠模式

2010-04-19 09:30:00

工廠模式PHP設計模式

2020-10-23 09:40:26

設計模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2024-07-31 08:12:33

2010-10-09 09:25:35

Python工廠模式
點贊
收藏

51CTO技術棧公眾號