美文网首页
设计模式之旅4--抽象工厂模式

设计模式之旅4--抽象工厂模式

作者: 小楠总 | 来源:发表于2018-07-11 00:13 被阅读100次

    1. 定义

    为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。

    抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时(产品族——两个互相影响的产品线),通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

    抽象工厂模式

    2. 使用场景

    一个对象族(或是一组没有任何关系的对象)都有相同的约束,例如生成不同操作系统的程序,则可以使用抽象工厂模式。(相对来说用得比较少)

    3. 实现

    两个产品线(1、2和A、B)产品的抽象类及其实现:

    public abstract class ProductA {}
    public class ConcreteProductA1 extends ProductA {}
    public class ConcreteProductA2 extends ProductA {}
    
    public abstract class ProductB {}
    public class ConcreteProductB1 extends ProductB {}
    public class ConcreteProductB2 extends ProductB {}
    

    抽象工厂类:

    public abstract class Factory {
    
        public abstract ProductA createProductA();
    
        public abstract ProductB createProductB();
    }
    

    具体的工厂实现类:

    public class ConcreteFactory1 extends Factory {
    
        @Override
        public ProductA createProductA() {
            return new ConcreteProductA1();
        }
    
        @Override
        public ProductB createProductB() {
            return new ConcreteProductB1();
        }
    }
    
    
    public class ConcreteFactory2 extends Factory {
    
        @Override
        public ProductA createProductA() {
            return new ConcreteProductA2() {
            };
        }
    
        @Override
        public ProductB createProductB() {
            return new ConcreteProductB2();
        }
    }
    

    4. 优点

    • 封装性:与工厂方法模式一样,高层模块无需关心产品的具体实现,只需要关心接口。
    • 产品族内的约束为非公开状态,例如可以增加控制产品族之间的比例的功能。

    5. 缺点

    • 扩展性差:产品族难扩展,产品等级易扩展。

    相关文章

      网友评论

          本文标题:设计模式之旅4--抽象工厂模式

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