亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Abstract factory pattern-抽象工廠模式

系統(tǒng) 1960 0
參考文獻(xiàn):
http://en.wikipedia.org/wiki/Abstract_factory_pattern

??? 抽象工廠模式(英語:Abstract Factory)是一種常見的設(shè)計(jì)模式。此模式為一個(gè)產(chǎn)品家族提供了統(tǒng)一的創(chuàng)建接口。當(dāng)需要這個(gè)產(chǎn)品家族的某一系列的時(shí)候,可以從抽象工廠中選出相對(duì)系的系列來創(chuàng)建一個(gè)具體的工廠類別。

例子
??? 假設(shè)我們有兩種產(chǎn)品接口 Button 和 Border ,每一種產(chǎn)品都支持多種系列,比如 Mac 系列和 Windows 系列。這樣每個(gè)系列的產(chǎn)品分別是 MacButton, WinButton, MacBorder, WinBorder 。為了可以在運(yùn)行時(shí)刻創(chuàng)建一個(gè)系列的產(chǎn)品族,我們可以為每個(gè)系列的產(chǎn)品族建立一個(gè)工廠 MacFactory 和 WinFactory 。每個(gè)工廠都有兩個(gè)方法 CreateButton 和 CreateBorder 并返回對(duì)應(yīng)的產(chǎn)品,可以將這兩個(gè)方法抽象成一個(gè)接口 AbstractFactory 。這樣在運(yùn)行時(shí)刻我們可以選擇創(chuàng)建需要的產(chǎn)品系列。

    
package com.sinosoft.train.gof.cp;

interface GUIFactory {
    public Button createButton();
}
 
 
class WinFactory implements GUIFactory {
    public Button createButton() {
        return new WinButton();
    }
}
 
 
class OSXFactory implements GUIFactory {
    public Button createButton() {
        return new OSXButton();
    }
}

interface Button {
    public void paint();
}
 
 
class WinButton implements Button {
    public void paint() {
        System.out.println("I'm a WinButton");
    }
}
 
 
class OSXButton implements Button {
    public void paint() {
        System.out.println("I'm an OSXButton");
    }
}
 
 
class Application {
    public Application(GUIFactory factory){
        Button button = factory.createButton();
        button.paint();
    }
}
 
public class AbstractFactory {
    public static void main(String[] args) {
        new Application(createOsSpecificFactory());
    }
 
    public static GUIFactory createOsSpecificFactory() {
        int sys = 0;
        if (sys == 1) {
            return new WinFactory();
        } else {
            return new OSXFactory();
        }
    }
}


  

適用性
在以下情況可以使用抽象工廠模式
一個(gè)系統(tǒng)要獨(dú)立于它的產(chǎn)品的創(chuàng)建、組合和表示時(shí)。
一個(gè)系統(tǒng)要由多個(gè)產(chǎn)品系列中的一個(gè)來配置時(shí)。
當(dāng)你要強(qiáng)調(diào)一系列相關(guān)的產(chǎn)品對(duì)象的設(shè)計(jì)以便進(jìn)行聯(lián)合使用時(shí)。
當(dāng)你提供一個(gè)產(chǎn)品類庫(kù),而只想顯示它們的接口而不是實(shí)現(xiàn)時(shí)

優(yōu)點(diǎn)
具體產(chǎn)品從客戶代碼中被分離出來
容易改變產(chǎn)品的系列
將一個(gè)系列的產(chǎn)品族統(tǒng)一到一起創(chuàng)建

缺點(diǎn)
在產(chǎn)品族中擴(kuò)展新的產(chǎn)品是很困難的,它需要修改抽象工廠的接口

Abstract factory pattern-抽象工廠模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品久久久久久久hd | 不一样的天空在线高清观看 | 亚洲一区二区三区国产精品 | 婷婷综合社区 | 久久99色 | 亚洲高清视频免费 | 天天操天天干天天干 | 七色永久性tv网站免费看 | 欧美6699在线视频免费 | 97久久曰曰久久久 | 女孕学护士一级毛片 | 国产精品亚洲二线在线播放 | 国产99在线观看 | 国产精品美女久久久久网 | 色视频一区二区三区 | 国产亚洲精品久久 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aa在线看 | 精彩视频一区二区三区 | 国产成人a毛片 | 狠狠色狠狠色综合久久第一次 | 精品视频一区在线观看 | 青青久久99久久99久久999 | 一个色中文字幕 | 波多野结衣一区免费作品 | 四虎b789ucom| 国产成人国产在线观看入口 | 伊人色综合久久天天爱 | 亚洲高清在线观看播放 | 成人一级免费视频 | 国产一区二区三区欧美精品 | 99久久中文字幕伊人 | 天天夜碰日日摸日日澡 | 香蕉视频毛片 | 国产麻豆va精品视频 | 91在线操| 久久综合狠狠综合久久综合88 | 高清视频一区二区 | 性性影院在线观看 | 九九九国产视频 | 久久国产区 | 欧美精品专区第1页 |