抽象工厂模式
来源:互联网 发布:域名主机系统 编辑:程序博客网 时间:2024/06/06 13:07
抽象工厂模式
抽象工厂模式是创建模式,是工厂方法模式进一步的推广。
抽象工厂模式向客户端提供一个接口,客户端可以不需要指定创建产品的具体类型创建多个产品族的对象。
结构与角色
涉及到角色:
- 抽象工厂角色(Creator)
这个角色是工厂方法模式的核心,任何创建产品对象的工厂类都必须实现这个接口。在实际的系统中这个角色也可以是一个java的抽象类。 - 具体工厂角色(Concrete Creator)
这个角色是实现了抽象工厂接口的java类,含有与应用密切相关的逻辑,并且受到应用程序的调用创建产品。 - 抽象产品角色(Product)
工厂方法模式创建产品对象的超类,也是产品对象共同的父类或共同的接口。实际系统中这个对象常常用java抽象类实现 - 具体产品角色(Concrete Product)
这个角色实现了抽象产品角色定义的接口,工厂方法模式创建的每一个对象都是某个具体产品实例。
实现
1.抽象工厂角色(Creator)
抽象工厂角色提供两个工厂方法,以创建两个不同产品族对象
public interface Factory{// 产品族A的工厂方法public ProductA factoryA();// 产品族B的工厂方法public ProductB factoryB();}
2.抽象产品角色(Product)
两个产品族抽象对象
public interface ProductA{ }public interface ProductB{}
3.具体产品角色(Concrete Product)
每个产品族有两个具体产品
public class ProductA1 implements ProductA{public ProductA1(){System.out.println("生成产品a1");}}public class ProductA2 implements ProductA{public ProductA2(){System.out.println("生成产品a2");}}public class ProductB1 implements ProductB{public ProductB1(){System.out.println("生产产品b1");}}public class ProductB2 implements ProductB{public ProductB2(){System.out.println("生产产品b2");}}
4.具体工厂角色(Concrete Creator)
public class ConcreteFactory1 implements Factory{@Overridepublic ProductA factoryA(){return new ProductA1();}@Overridepublic ProductB factoryB(){return new ProductB1();}}public class ConcreteFactory2 implements Factory{@Overridepublic ProductA factoryA(){return new ProductA2();}@Overridepublic ProductB factoryB(){return new ProductB2();}}
5.客户端
public class Client{public static void main(String[] args){Factory concreteFactory1 = new ConcreteFactory1();Factory concreteFactory2 = new ConcreteFactory2();concreteFactory1.factoryA();concreteFactory2.factoryA();concreteFactory1.factoryB();concreteFactory2.factoryB();}}
例子中有两个抽象产品,所以工厂角色中提供了两个工厂方法。有多少抽象产品,就有多少工厂方法。增加新的抽象产品需要修改每一个工厂角色。
抽象产品数目不变,增加新的产品只需要增加新的工厂就可以。
阅读全文
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- fis3 精灵图制作
- mycat accii通配取模 partition size : 5 > table datanode size : 3, please make sure table datanode size =
- 使用JS写纵向冗余校验LRC的方法
- link引入样式与import的区别
- php 支持断点续传的文件下载类
- 抽象工厂模式
- Python中的日期和时间
- Spring 的 AOP的测试 --(二)
- 文件转base64输出
- 双系统无法引导问题,ubuntu,16.10安装win10后,无法启动ubuntu
- [JAVA学习笔记-94]JVM的client与server模式
- Shiro详解之SecurityManager
- NIO管道流的操作
- 技术博客4