成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊抽象工廠模式(AbstractFactoty)

開發 前端
工廠方法確實為系統結構提供了非常靈活強大的動態擴展機制,只要我們更換一下具體的工廠方法,系統其他地方無需一點變換,就有可能將系統功能進行改頭換面的變化。

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

一、概述

提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。

二、為何使用

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

為什么工廠模式是如此常用?因為工廠模式就相當于創建實例對象的new,我們經常要根據類Class生成實例對象,如A a=new A() 工廠模式也是用來創建實例對象的,所以以后new時就要多個心眼,是否可以考慮實用工廠模式,雖然這樣做,可能多做一些工作,但會給你系統帶來更大的可擴展性和盡量少的修改量。

三、實用性

  1. 一個系統要獨立于它的產品的創建、組合和表示時。
  2. 一個系統要由多個產品系列中的一個來配置時。
  3. 當你要強調一系列相關的產品對象的設計以便進行聯合使用時。
  4. 當你提供一個產品類庫,而只想顯示它們的接口而不是實現時。

四、參與者

  1. AbstractFactory 聲明一個創建抽象產品對象的操作接口。
  2. ConcreteFactory 實現創建具體產品對象的操作。
  3. AbstractProduct 為一類產品對象聲明一個接口。
  4. ConcreteProduct 定義一個將被相應的具體工廠創建的產品對象。實現AbstractProduct接口。
  5. Client 僅使用由AbstractFactory和AbstractProduct類聲明的接口

五、類圖


圖片圖片

六、示例

  • AbstractFactory

定義抽象工程類IAnimalFactory

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

創建抽象工廠類的兩個實現類,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

定義抽象工廠中要生產的抽象產品接口ICat和IDog

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

創建產品的實現類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

定義一個測試類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();
 }
}
  • 輸出結果
The black cat is eating!
The black dog is eating
The white cat is eating!
The white dog is eating!

七、總結

由此可見,工廠方法確實為系統結構提供了非常靈活強大的動態擴展機制,只要我們更換一下具體的工廠方法,系統其他地方無需一點變換,就有可能將系統功能進行改頭換面的變化。

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2022-05-24 08:21:16

數據安全API

2023-09-10 21:42:31

2022-10-28 07:27:17

Netty異步Future

2022-11-12 12:33:38

CSS預處理器Sass

2022-06-26 09:40:55

Django框架服務

2023-04-26 07:30:00

promptUI非結構化

2022-02-14 07:03:31

網站安全MFA

2025-03-27 02:00:00

SPIJava接口

2023-07-27 07:46:51

SAFe團隊測試

2022-01-04 12:08:46

設計接口

2022-04-06 08:23:57

指針函數代碼

2023-12-28 09:55:08

隊列數據結構存儲

2024-02-26 00:00:00

Go性能工具

2022-12-07 13:12:15

2022-07-29 08:17:46

Java對象內存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 性生活毛片 | 蜜桃在线播放 | 91av在线影院 | 国产精品视频二区三区 | 成人在线免费网站 | 成人不卡 | 国产精品久久久久久久久久妞妞 | 亚洲精品一区在线观看 | 99久久久久久 | 午夜在线视频 | 欧美一区二区三区小说 | 九九色综合 | 91麻豆精品国产91久久久久久 | 免费看一区二区三区 | 色永久 | 欧美中文字幕在线 | 日韩av一区二区在线观看 | 日本二区在线观看 | 国产亚洲成av人片在线观看桃 | 中文字幕精品一区 | 毛片免费观看视频 | 69堂永久69tangcom | 国产精品国产精品国产专区不卡 | 在线观看视频一区 | 亚洲国产精品一区二区三区 | 人人射人人 | 精品一区在线免费观看 | 精久久久 | 国产精品不卡一区 | 精品成人免费一区二区在线播放 | 亚洲一区二区三区四区五区午夜 | 午夜精品91 | 新超碰97 | 美女天堂在线 | 国产精品久久久久无码av | 国产成人av免费看 | 国产成都精品91一区二区三 | 九九亚洲| 最新91在线 | 伊人久麻豆社区 | 成人久久18免费网站麻豆 |