美文网首页
5.抽象工厂模式

5.抽象工厂模式

作者: 未知的证明 | 来源:发表于2019-04-30 09:59 被阅读0次

之前介绍了工厂模式的前两种:(文章链接:简单工厂模式 / 工厂方法模式)本篇介绍抽象工厂模式。

1、定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

2、模式结构:(和工厂方法模式一样)

(1)AbstractFactory(抽象工厂):用于声明生成抽象产品的方法,可以定义一组方法。
(2)ConcreteFactory(具体工厂):实现抽象工厂声明生成抽象产品的方法。
(3)AbstractProduct(抽象产品):为每种产品声明接口。
(4)ConcreteFactory(具体产品):实现抽象产品接口中的业务方法,定义具体工厂生产的具体产品对象。

3、案例分析(电器工厂)

(1)抽象产品类 TV

public interface TV  
{  
    public void play();  
}  

(2)具体产品类 HaierTV

public class HaierTV implements TV
{
    public void play()
    {
        System.out.println("海尔电视机播放中。。。");
    }
}

(3)具体产品类 MiTV

public class MiTV implements TV
{
    public void play()
    {
        System.out.println("小米电视机播放中。。。");
    }
}

(4)抽象产品类 AirConditioner

public  interface AirConditioner
{
    public void inUse();
}

(5)具体产品类 HaierAirConditioner

public  class HaierAirConditioner implements AirConditioner
{
    public void inUse(){
        System.out.println("海尔空调使用中。。。");
    }
}

(6)具体产品类 MiAirConditioner

public  class MiAirConditioner implements AirConditioner
{
    public void inUse(){
        System.out.println("小米空调使用中。。。");
    }
}

(7)抽象工厂类 EFactory

public interface EFactory
{
    public TV produceTV();
    public AirConditioner produceAirConditioner();
}

(8)具体工厂类 HaierFactory

public class HaierFactory implements EFactory
{
    public TV produceTV(){
        return new HaierTV();
    }
    public AirConditioner produceAirConditioner(){
        return new HaierAirConditioner();
    }
}

(9)具体工厂类 MiFactory

public class MiFactory implements EFactory
{
    public TV produceTV(){
        return new MiTV();
    }
    public AirConditioner produceAirConditioner(){
        return new MiAirConditioner();
    }
}

4、模式优缺点:

(1)优点:一个产品族中的多个对象被设计一起使用,能保证客户始终只使用同一个产品族的对象;增加新的具体工厂和产品族简单方便。
(2)缺点:具体工厂实现了抽象工厂接口,故增加新产品的特有功能不被允许。

5、模式应用:Java 中 AWT 中使用抽象工厂模式实现不同操作系统中应用外观界面的一致性。

6、三种模式的比较:

简单工厂模式:提供一个工厂用于生产所有产品,添加新产品时必须将该产品的生产逻辑写入这个唯一的工厂。
工厂方法模式:在简单工厂的基础上将工厂分解为抽象工厂和具体工厂,添加新产品时需要创建生产该产品的具体工厂,该具体工厂必须继承或实现抽象工厂。
抽象工厂模式:在工厂方法的基础上增加了产品族,抽象工厂可定义产品族的多个产品的方法,具体工厂创建产品族的所有产品。

相关文章

  • 5. 抽象工厂模式

    设计模式并非是难以理解, 或是难以应用到实践中的, 相反的, 设计模式恰恰代表了某些场景下的最佳实践! 这些设计模...

  • 5.抽象工厂模式

    之前介绍了工厂模式的前两种:(文章链接:简单工厂模式 / 工厂方法模式)本篇介绍抽象工厂模式。 1、定义:提供一个...

  • Java设计模式

    //设计模式/** 创建型模式* 1.工厂模式* 2.抽象工厂模式* 3.单例模式* 4.建造者模式* 5.原型模...

  • 抽象工厂模式(选择产品簇)

    目录 回顾众多工厂模式 抽象工厂模式的理念 抽象工厂模式与工厂方法模式的差异 怎么来实现抽象工厂模式 抽象工厂模式...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 38种Javascript设计模式

    38种设计模式 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 4.建造者模式 5.原型模式 6.单例模式 ...

  • 【抽象工厂模式】Abstract Factory Design

    抽象工厂模式 抽象工厂模式是**Creational **模式之一 抽象工厂模式和工厂模式很相似,甚至可以说抽象工...

  • Go 常用的设计模式

    1. 单例模式: 2. 简单工厂模式 3. 抽象工厂模式 它返回的是接口而不是结构体。 4. 工厂方法模式 5. ...

  • Java工厂模式详解--学习笔记

    目录1.概念2.角色3.工厂执行的具体流程简单工厂模式(静态工厂方法)工厂模式抽象工厂模式4.分类5.总结6.学习...

  • 第3章 创建型模式-抽象工厂模式

    ■ 抽象工厂模式的优点 ■ 抽象工厂模式的缺点 ■ 抽象工厂模式的使用场景 ■ 抽象工厂 AbstractFact...

网友评论

      本文标题:5.抽象工厂模式

      本文链接:https://www.haomeiwen.com/subject/iclmnqtx.html