日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
設(shè)計(jì)模式系列-抽象工廠模式

本文轉(zhuǎn)載自微信公眾號(hào)「花括號(hào)MC」,作者花括號(hào)MC。轉(zhuǎn)載本文請(qǐng)聯(lián)系花括號(hào)MC公眾號(hào)。

豐順網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

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

舉個(gè)例子

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

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

來看一下UML :

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

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

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

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

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

紅色主題工廠類類似,因?yàn)槠虿辉趩为?dú)列出。

來看一下客戶端如何使用

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

總結(jié)

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

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


本文名稱:設(shè)計(jì)模式系列-抽象工廠模式
URL地址:http://m.5511xx.com/article/djjhhep.html