摘要:抽象工厂模式概念抽象工厂模式是工厂模式的升级,用来创建一组相关或相互依赖的对象。
抽象工厂模式
概念
抽象工厂模式是工厂模式的升级,用来创建一组相关或相互依赖的对象。
角色
1.抽象工厂角色
2.具体工厂角色
3.产品接口或抽象产品角色
4.具体产品角色
角色对应关系
1.多个具体工厂继承自抽象工厂;
2.多个具体产品继承自抽象产品或实现产品接口;
3.每个具体工厂可产生多个具体产品。
实现过程
产品接口
public interface Product1 { } public interface Product2 { }
具体产品类
public class ProductA1 implements Product1 { public ProductA1(){ System.out.println("Product : " + this.getClass().getSimpleName()); } } public class ProductA2 implements Product2 { public ProductA2(){ System.out.println("Product : " + this.getClass().getSimpleName()); } }
定义抽象工厂
public abstract class AbstractFactory { public abstract Product1 create1(); public abstract Product2 create2(); }
产生产品的具体工厂
public class FactoryA extends AbstractFactory{ @Override public Product1 create1() { return new ProductA1(); } @Override public Product2 create2() { return new ProductA2(); } }
调用方法
public static void main(String[] args) { AbstractFactory abstractFactory = new FactoryA(); abstractFactory.create1(); abstractFactory.create2(); }
输出
Product : ProductA1 Product : ProductA2
抽象工厂与工厂方法
1.抽象工厂模式适用于改变产品系列,对产品系列的改变符合开闭原则;
2.工厂方法模式适用于改变产品类别。
源码
https://github.com/Seasons20/DisignPattern.git
END
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71109.html
摘要:支持增加任意产品抽象工厂用来生产不同产品族的全部产品。对于增加新的产品,无能为力支持增加产品族参考系列源地址系列目录设计模式概述设计模式一简单工厂模式设计模式二工厂方法模式设计模式三抽象工厂模式设计模式四单例模式 一、什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次...
摘要:在标准的种设计模式中,与工厂相关的模式有种工厂方法模式和抽象工厂模式。在这里,要区分清楚的是工厂方法模式强调的是方法,而抽象工厂模式强调的是工厂,这是两个相关但又不相同的概念,就像做饭和厨房的区别,一个是谈动作,一个是谈空间。 在标准的23种设计模式中,与工厂相关的模式有2种:工厂方法模式(Factory method pattern)和抽象工厂模式(Abstract factory ...
摘要:对于这个问题,接下来的工厂方法模式可以解决这个问题。二工厂方法模式的优点拥有良好的封装性,代码结构清晰。参考系列源地址系列目录设计模式概述设计模式一简单工厂模式设计模式二工厂方法模式设计模式三抽象工厂模式设计模式四单例模式 简单工厂简述: 简单工厂模式实现了产品类的代码跟客户端代码分离,但会有一个问题,优秀的代码是符合开闭原则如果你要加一个C类产品,你就要修改工厂类里面的代码,也就是说...
阅读 2579·2021-10-25 09:45
阅读 1241·2021-10-14 09:43
阅读 2299·2021-09-22 15:23
阅读 1521·2021-09-22 14:58
阅读 1935·2019-08-30 15:54
阅读 3540·2019-08-30 13:00
阅读 1357·2019-08-29 18:44
阅读 1573·2019-08-29 16:59