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

Abstract factory pattern-抽象工廠模式

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

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

例子
??? 假設我們有兩種產(chǎn)品接口 Button 和 Border ,每一種產(chǎn)品都支持多種系列,比如 Mac 系列和 Windows 系列。這樣每個系列的產(chǎn)品分別是 MacButton, WinButton, MacBorder, WinBorder 。為了可以在運行時刻創(chuàng)建一個系列的產(chǎn)品族,我們可以為每個系列的產(chǎn)品族建立一個工廠 MacFactory 和 WinFactory 。每個工廠都有兩個方法 CreateButton 和 CreateBorder 并返回對應的產(chǎn)品,可以將這兩個方法抽象成一個接口 AbstractFactory 。這樣在運行時刻我們可以選擇創(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();
        }
    }
}


  

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

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

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

Abstract factory pattern-抽象工廠模式


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 你懂的国产 | 一级欧美一级日韩毛片99 | 国产精品午夜激爽毛片 | 全免费一级午夜毛片 | 久久夜色视频 | 黄色免费观看视频网站 | 鲁丝一区二区三区不属 | 亚洲综合一区二区三区四区 | 精品久久久久久久 | 奇米狠狠干 | 老子影院午夜伦不卡亚洲 | 丁香色婷婷 | 成年女人免费看一级人体片 | 国产中的精品一区的 | 青青青国产精品手机在线观看 | 深夜成人在线 | yellow中文字幕久久网 | 亚洲播放 | 国产精品伦理 | 久久福利网站 | 伊人久久精品午夜 | 久青草国产手机在线视频 | 国产在视频线精品www666 | 麻豆精品视频 在线视频 | 久久国产麻豆 | 久久国产视频一区 | 成人毛片免费观看视频 | 亚洲专区一路线二 | 成人a一级毛片免费看 | 日本一区二区三区在线观看 | 四虎永久在线视频 | 免费一级欧美大片久久网 | 香港之夜免费观看 | 最新香蕉97超级碰碰碰碰碰久 | 福利视频一区二区 | 欧美成年黄网站色高清视频 | 日本xxx高清免费视频 | 俄罗斯三级毛片 | 四虎影院免费视频 | 97福利视频 | 99热国产这里只有精品免费 |