美文网首页
抽象工厂模式学习

抽象工厂模式学习

作者: 二毛_220d | 来源:发表于2019-06-09 17:03 被阅读0次
package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName AbstractProductA
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:08
 * @Version V1.0
 **/
public class AbstractProductA {
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName AbstractProductB
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:09
 * @Version V1.0
 **/
public class AbstractProductB {
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ProductA1
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:10
 * @Version V1.0
 **/
public class ProductA1 extends AbstractProductA {
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ProductA2
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:11
 * @Version V1.0
 **/
public class ProductA2 extends  AbstractProductA {
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ProductB1
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:11
 * @Version V1.0
 **/
public class ProductB1  extends  AbstractProductB{
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ProductB2
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:12
 * @Version V1.0
 **/
public class ProductB2 extends  AbstractProductB {
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName AbstractFactory
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:05
 * @Version V1.0
 **/
public  abstract class AbstractFactory {
    abstract   AbstractProductA createProductA();
    abstract  AbstractProductB createProductB();

}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ConcreteFactory1
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:07
 * @Version V1.0
 **/
public class ConcreteFactory1 extends  AbstractFactory{
  @Override
  AbstractProductA createProductA() {
    return new ProductA1();
  }

  @Override
  AbstractProductB createProductB() {
    return new ProductB1();
  }
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName ConcreteFactory2
 * @Description
 * @Author niutongtong
 * @Date 2019-06-09 11:07
 * @Version V1.0
 **/
public class ConcreteFactory2 extends  AbstractFactory{


  @Override
  AbstractProductA createProductA() {
    return new ProductA2();
  }

  @Override
  AbstractProductB createProductB() {
    return new ProductB2();
  }
}

package com.java.ntt.designPatterns.AbstractFactory;

/**
 * @ClassName Client
 * @Description
 * 抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
 *
 *   抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 createProductA() 和 createProductB() 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂方法模式的定义。
 *
 *   至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。
 *
 *   从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。
 * @Author niutongtong
 * @Date 2019-06-09 11:18
 * @Version V1.0
 **/
public class Client {

    public static void main(String[] args) {
      AbstractFactory abstractFactory = new ConcreteFactory1();
      AbstractProductA productA = abstractFactory.createProductA();
      AbstractProductB productB = abstractFactory.createProductB();
      // do something with productA and productB
    }


}

image

学习参考: 传送门

相关文章

  • 设计模式(3) 抽象工厂模式

    抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式。简单工厂的职...

  • 2021-11-16 - 学习记录

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

  • Android设计模式

    1. 设计模式之抽象工厂模式 在学习抽象工厂模式前要先了解一下工厂模式,而抽象工厂模式主要就是为了弥补工厂模式的缺...

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

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

  • 工厂模式

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

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

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

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

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

  • 常用设计模式

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

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

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

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

网友评论

      本文标题:抽象工厂模式学习

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