日韩无码专区无码一级三级片|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)銷解決方案
我們一起聊聊抽象工廠模式(AbstractFactoty)

今天給大家介紹《Java極簡(jiǎn)設(shè)計(jì)模式》的第02章,抽象工廠模式(AbstractFactoty),多一句沒有,少一句不行,用最簡(jiǎn)短的篇幅講述設(shè)計(jì)模式最核心的知識(shí),好了,開始今天的內(nèi)容。

創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有10多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗(yàn),千余家客戶的共同信賴。提供做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)

一、概述

提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。

二、為何使用

工廠模式是我們最常用的模式了,著名的Jive論壇 ,就大量使用了工廠模式,工廠模式在Java程序系統(tǒng)可以說是隨處可見。

為什么工廠模式是如此常用?因?yàn)楣S模式就相當(dāng)于創(chuàng)建實(shí)例對(duì)象的new,我們經(jīng)常要根據(jù)類Class生成實(shí)例對(duì)象,如A a=new A() 工廠模式也是用來創(chuàng)建實(shí)例對(duì)象的,所以以后new時(shí)就要多個(gè)心眼,是否可以考慮實(shí)用工廠模式,雖然這樣做,可能多做一些工作,但會(huì)給你系統(tǒng)帶來更大的可擴(kuò)展性和盡量少的修改量。

三、實(shí)用性

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

四、參與者

  1. AbstractFactory 聲明一個(gè)創(chuàng)建抽象產(chǎn)品對(duì)象的操作接口。
  2. ConcreteFactory 實(shí)現(xiàn)創(chuàng)建具體產(chǎn)品對(duì)象的操作。
  3. AbstractProduct 為一類產(chǎn)品對(duì)象聲明一個(gè)接口。
  4. ConcreteProduct 定義一個(gè)將被相應(yīng)的具體工廠創(chuàng)建的產(chǎn)品對(duì)象。實(shí)現(xiàn)AbstractProduct接口。
  5. Client 僅使用由AbstractFactory和AbstractProduct類聲明的接口

五、類圖

圖片

六、示例

  • AbstractFactory

定義抽象工程類IAnimalFactory

public interface IAnimalFactory {
    /**
     * 定義創(chuàng)建Icat接口實(shí)例的方法
     * @return
     */
    ICat createCat();
    /**
     * 定義創(chuàng)建IDog接口實(shí)例的方法
     * @return
     */
    IDog createDog();
}
  • ConcreteFactory

創(chuàng)建抽象工廠類的兩個(gè)實(shí)現(xiàn)類,WhiteAnimalFactory和BlackAnimalFactory

public class WhiteAnimalFactory implements IAnimalFactory {

    public ICat createCat() {
        return new WhiteCat();
    }

    public IDog createDog() {
        return new WhiteDog();
    }
}
public class BlackAnimalFactory implements IAnimalFactory {
 @Override
    public ICat createCat() {
        return new BlackCat();
    }

    public IDog createDog() {
        return new BlackDog();
    }

}
  • AbstractProduct

定義抽象工廠中要生產(chǎn)的抽象產(chǎn)品接口ICat和IDog

public interface ICat {
    /**
     * 定義方法
     */
    void eat();
}
public interface IDog {
  /**
     * 定義方法
     */
    void eat();
}
  • ConcreteProduct

創(chuàng)建產(chǎn)品的實(shí)現(xiàn)類BlackCat、BlackDog、WhiteCat、WhiteDog

public class BlackCat implements ICat {
 @Override
    public void eat() {
        System.out.println("The black cat is eating!");
    }
}
public class BlackDog implements IDog {
 @Override
    public void eat() {
        System.out.println("The black dog is eating");
    }
}
public class WhiteCat implements ICat {
 @Override
    public void eat() {
        System.out.println("The white cat is eating!");
    }
}
public class WhiteDog implements IDog {
 @Override
    public void eat() {
        System.out.println("The white dog is eating!");
    }

}
  • Client

定義一個(gè)測(cè)試類Test

public class Test {
 public static void main(String[] args) {
     IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();
     ICat blackCat = blackAnimalFactory.createCat();
     blackCat.eat();
     IDog blackDog = blackAnimalFactory.createDog();
     blackDog.eat();
     
     IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
     ICat whiteCat = whiteAnimalFactory.createCat();
     whiteCat.eat();
     IDog whiteDog = whiteAnimalFactory.createDog();
     whiteDog.eat();
 }
}
  • 輸出結(jié)果
The black cat is eating!
The black dog is eating
The white cat is eating!
The white dog is eating!

七、總結(jié)

由此可見,工廠方法確實(shí)為系統(tǒng)結(jié)構(gòu)提供了非常靈活強(qiáng)大的動(dòng)態(tài)擴(kuò)展機(jī)制,只要我們更換一下具體的工廠方法,系統(tǒng)其他地方無(wú)需一點(diǎn)變換,就有可能將系統(tǒng)功能進(jìn)行改頭換面的變化。


網(wǎng)頁(yè)題目:我們一起聊聊抽象工廠模式(AbstractFactoty)
URL分享:http://m.5511xx.com/article/cdgpode.html