日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

详解设计模式:抽象工厂模式

發(fā)布時(shí)間:2024/1/1 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解设计模式:抽象工厂模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工廠方法模式,又稱工廠模式、多態(tài)工廠模式和虛擬構(gòu)造器模式,通過工廠父類定義負(fù)責(zé)創(chuàng)建產(chǎn)品的公共接口,子類負(fù)責(zé)生產(chǎn)具體對(duì)象。可以理解為簡(jiǎn)單工程模式的升級(jí),解決簡(jiǎn)單工廠模式的弊端。

本篇內(nèi)容包括:關(guān)于 工廠方法模式、工廠方法模式 Demo。


文章目錄

    • 一、關(guān)于 抽象工廠模式
        • 1、關(guān)于 抽象工廠模式
        • 2、簡(jiǎn)單工廠、工廠方法、抽象工廠模式對(duì)比
        • 3、關(guān)于 抽象工廠模式構(gòu)成
        • 4、關(guān)于 抽象工廠模式的實(shí)現(xiàn)
        • 5、關(guān)于 抽象工廠模式的優(yōu)缺點(diǎn)
    • 二、抽象工廠模式 Demo
        • 1、Demo 設(shè)計(jì)
        • 2、Demo 實(shí)現(xiàn)
        • 3、Demo 測(cè)試


一、關(guān)于 抽象工廠模式

1、關(guān)于 抽象工廠模式

抽象工廠模式是指當(dāng)有多個(gè)抽象角色時(shí),使用的一種工廠模式。這里的抽象角色就是產(chǎn)品族。

Ps:產(chǎn)品族是具有相同屬性的同類型產(chǎn)品。

抽象工廠,非常適合解決兩個(gè)維度的組合產(chǎn)品的構(gòu)造問題,取其中一個(gè)維度作為產(chǎn)品族,另外一個(gè)維度作為產(chǎn)品族中具體的多個(gè)產(chǎn)品。

2、簡(jiǎn)單工廠、工廠方法、抽象工廠模式對(duì)比

  • 簡(jiǎn)單工廠模式:一個(gè)工廠生產(chǎn)所有產(chǎn)品。
  • 工廠方法模式:每個(gè)工廠生產(chǎn)自己負(fù)責(zé)的具體產(chǎn)品。
  • 抽象工廠模式**:**抽象工廠模式是工廠方法模式的升級(jí)版本,工廠方法模式只生產(chǎn)一個(gè)等級(jí)的產(chǎn)品,而抽象工廠模式可生產(chǎn)多個(gè)等級(jí)(一個(gè)系列)的產(chǎn)品。

3、關(guān)于 抽象工廠模式構(gòu)成

抽象工廠的構(gòu)成:

  • 抽象工廠(Abstract Factory):提供了創(chuàng)建產(chǎn)品的接口,它包含多個(gè)創(chuàng)建產(chǎn)品的方法 newProduct(),可以創(chuàng)建多個(gè)不同等級(jí)的產(chǎn)品。。

  • 具體工廠(ConcreteFactory):主要是實(shí)現(xiàn)抽象工廠中的抽象方法,完成具體產(chǎn)品的創(chuàng)建。

  • 抽象產(chǎn)品(Product):定義了產(chǎn)品的規(guī)范,描述了產(chǎn)品的主要特性和功能,抽象工廠模式支持多個(gè)抽象產(chǎn)品。

  • 具體產(chǎn)品(ConcreteProduct):實(shí)現(xiàn)了抽象產(chǎn)品角色所定義的接口,由具體工廠來創(chuàng)建,它同具體工廠之間是多對(duì)一關(guān)系。

4、關(guān)于 抽象工廠模式的實(shí)現(xiàn)

首先,根據(jù)具體產(chǎn)品進(jìn)行抽象,將它們的公共的代碼進(jìn)行抽象和提取后,封裝在一個(gè)抽象產(chǎn)品中;

其次,根據(jù)抽象產(chǎn)品,將各種不同對(duì)象的相關(guān)代碼封裝到不同的類中,這些類稱為具體產(chǎn)品類,每一個(gè)具體產(chǎn)品都是抽象產(chǎn)品的子類;

然后,提供一個(gè)抽象工廠類用于提供創(chuàng)建各種產(chǎn)品族產(chǎn)品的方法,在根據(jù)具體產(chǎn)品,實(shí)現(xiàn)相應(yīng)的具體工廠類,實(shí)現(xiàn)創(chuàng)建對(duì)應(yīng)產(chǎn)品的方法;

最后,客戶端只需要調(diào)用具體工廠類的工廠方法可得到一個(gè)相應(yīng)的具體產(chǎn)品對(duì)象。

5、關(guān)于 抽象工廠模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能保證客戶端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象。
  • 保證減少工廠類和具體產(chǎn)品的類添加。

缺點(diǎn):產(chǎn)品族擴(kuò)展非常困難,要增加一個(gè)系列的某一產(chǎn)品,既要在抽象的 工廠和抽象產(chǎn)品里加代碼,又要在具體的里面加代碼。


二、抽象工廠模式 Demo

1、Demo 設(shè)計(jì)

我們?cè)O(shè)計(jì)一個(gè)圖形工廠,其中圖形有多種顏色(紅色、藍(lán)色 …),還有多種形狀(矩形、圓形 …),我們利用工廠實(shí)現(xiàn)紅色矩形 和 藍(lán)色圓形的生產(chǎn)。

# 角色

Shape(抽象形狀類)、Retangle(矩形類)、Circle(圓形類)

Color(抽象顏色類)、Red(紅色類)、Blue(藍(lán)色類)

ShapeFactory(抽象工廠類)、RedRetangleFactory(紅色矩形工廠)、BlueCircleFactory(藍(lán)色圓形工廠)

# 實(shí)現(xiàn)

Shape 作為形狀產(chǎn)品族的抽象父類、Color 作為顏色產(chǎn)品族的抽象父類,使用 ShapeFactory 抽象工廠類分別實(shí)現(xiàn)顏色和形狀的設(shè)計(jì),最后由具體工廠實(shí)現(xiàn)類返回具體的顏色和形狀實(shí)現(xiàn)

2、Demo 實(shí)現(xiàn)

# Shape 形狀類

//抽象形狀類 public abstract class Shape {public abstract void sayShape(); }//矩形類 public class Retangle extends Shape {@Overidepublic void sayShape() {System.out.println("Hi, I'm Retangle!");} }//圓形類 public class Circle extends Shape {@Overidepublic void sayShape() {System.out.println("Hi, I'm Circle!");} }

# Color 顏色類

//抽象顏色類 public abstract class Color {public abstract void sayColor(); }//紅色類 public class Red extends Color {@Overidepublic void sayColor() {System.out.println("Hi, I'm Red!");} }//白色類 public class Blue extends Color {@Overidepublic void sayColor() {System.out.println("Hi, I'm Blue!");} }

# ShapeFactory 工廠類

//抽象工廠類 public abstract class ShapeFactory {public abstract Shape createShape();public abstract Color createColor(); }//紅色的矩 public class RedRetangleFactory extends ShapeFactory {@Overidepublic Shape createShape() {return new Retangle();}@Overidepublic Color createColor() {return new Red();} }//藍(lán)色的圓 public class BuleCircleFactory extends ShapeFactory {@Overidepublic Shape createShape() {return new Circle();}@Overidepublic Color createColor() {return new blue();} }

3、Demo 測(cè)試

public class Client {public static void main(String[] args) {Color color;Shape shape;// 紅色矩形ShapeFactory factory = new RedRetangleFactory();color = factory.createColor();shape = factory.createShape();} }

總結(jié)

以上是生活随笔為你收集整理的详解设计模式:抽象工厂模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。