美文网首页
工厂设计模式三(抽象工厂)

工厂设计模式三(抽象工厂)

作者: 新征程Dream | 来源:发表于2020-06-27 20:53 被阅读0次

抽象工厂

随着我们业务的不断复杂,我们的设计模式要需要作出调整。工厂设计模式的最终状态就是抽象工厂。那什么是抽象工厂呢?简单工厂,我们抽象出来的是产品,工厂方法,我们抽象出来的是工厂。而抽象工厂,就是把产品和工厂都抽象出来。保证每个工厂生产此工厂对应的产品类型。
回到代码层面
第一步:我们先把产品抽象出来,为什么先抽象产品呢?因为我们需要根据产品的种类来确定工厂的种类。
1.抽取所有产品的基类

package cn.zl.AbstractFactory;
// 所有产品的基类
public interface Product {
}

2.产品,我们为了显得业务很复杂,我们再分为产品A,产品B。
产品A的基类

package cn.zl.AbstractFactory;
// 产品A的父类
public interface ProductA extends Product {
}

产品B的基类

package cn.zl.AbstractFactory;
// 产品B的基类
public interface ProductB extends Product{
}

3.产品的具体实现类,A类产品,分为A1,A2。B类产品,分为B1,B2。代码如下:

package cn.zl.AbstractFactory;
public class ProductA_1 implements ProductA{
    ProductA_1(){
        // 产品A1
    }
}
package cn.zl.AbstractFactory;
public class ProductA_2 implements ProductA{
    ProductA_2(){
        // 产品A2
    }
}
package cn.zl.AbstractFactory;
public class ProductB_1 implements ProductB{
    ProductB_1(){
        // 产品B1
    }
}
package cn.zl.AbstractFactory;
public class ProductB_2 implements ProductB{
    ProductB_2(){
        // 产品B2
    }
}

第二步:开始抽象工厂基类。
1.所有工厂对象的父类

package cn.zl.AbstractFactory;
// 所有工厂的父类
public interface Factory {
}

2.创建工厂A和工厂B的实现类。

package cn.zl.AbstractFactory;
// 工厂A类
public class FactoryProductA implements Factory{
    public Product getProductA_1(){
        return new ProductA_1();
    }
    public Product getProductA_2(){
        return new ProductA_2();
    }
}
package cn.zl.AbstractFactory;
// 工厂B类
public class FactoryProductB implements Factory{

    public Product getProductB_1(){
        return new ProductB_1();
    }

    public Product getProductB_2(){
        return new ProductB_2();
    }
}

这样我们就完成了抽象工厂的案例。接下来,我们就测试一下。

package cn.zl.AbstractFactory;
public class Main {
    public static void main(String[] args) {
        // 生产productA1产品
        Product productA_1 = new FactoryProductA().getProductA_1();
        // 生产productA2产品
        Product productA_2 = new FactoryProductA().getProductA_2();
        // 生产product1产品
        Product productB_1 = new FactoryProductB().getProductB_1();
        // 生产productAB2产品
        Product productB_2 = new FactoryProductB().getProductB_2();
    }
}

好了,工厂设计模式,差不多完了,消化消化。在实际的工作中,懂设计模式更多的是帮助我们了解一些三方件的源码。这样我们很容易的搞清楚三方件的核心类。

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式理解

    工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。 简单工厂 简单...

  • 设计模式-创建型模式-工厂模式(工厂三兄弟)

    设计模式-创建型模式-工厂模式(工厂三兄弟)工厂模式分为简单工厂,工厂方法,抽象工厂。 简单工厂模式 一个接口,三...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • Android 源码设计模式解析与实战 读书笔记 6 抽象工厂模

    创建型设计模式 —— 抽象工厂模式 1. 抽象工厂模式介绍 抽象工厂模式(Abstract Factory Pat...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

网友评论

      本文标题:工厂设计模式三(抽象工厂)

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