设计模式之抽象工厂模式

2023-12-24 12:47:46

抽象工厂模式

1.定义

抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下:

Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。)

2.示例代码

public abstract class AbstractProductA {}
public abstract class AbstractProductB {}
public abstract class AbstractFactory {
    /**
     * 抽象类
     *
     * @return AbstractProductA
     */
    abstract AbstractProductA createProductA();

    /**
     * 抽象类
     *
     * @return AbstractProductB
     */
    abstract AbstractProductB createProductB();
}

public class ConcreteProductA extends AbstractProductA {}
public class ConcreteProductB extends AbstractProductB {}
public class ConcreteFactory extends AbstractFactory {
    @Override
    AbstractProductA createProductA() {
        return new ConcreteProductA();
    }

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

3.优点

  1. 封装性 每个产品的实现类不是高层模块要关心的,它要关心的是什么?是接口,是抽象,它不关心对象是如何创建出来,这由谁负责呢?工厂类,只要知道工厂类是谁,我就能创建出一个需要的对象,省时省力,优秀设计就应该如此。
  2. 约束为非公开状态

4.缺点

抽象工厂模式的最大缺点就是产品族扩展非常困难,为什么这么说呢?我们以通用代码为例,如果要增加一个产品C,也就是说产品家族由原来的2个增加到3个,看看我们的程序有多大改动吧!抽象类AbstractFactory要增加一个方法createProductC(),然后两个实现类都要修改,想想看,这严重违反了开闭原则,而且我们一直说明抽象类和接口是一个契约

文章来源:https://blog.csdn.net/youxiaxiaomage/article/details/135179921
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。