抽象工厂

      抽象工厂模式提供一个创建一个一系列相关或互相依赖对象的接口,而无需指定他们具体的类。(针对的是一个系列)

类图:

 

代码:

产品类:

publicclass AbstractProductA  {}

publicclass ProductA1 extends AbstractProductA {}

publicclass ProductA2 extends AbstractProductA{}

publicclass AbstractProductB {}

publicclass ProductB1 extends AbstractProductB {}

publicclass ProductB2 extends AbstractProductB {}

工厂类:

publicinterface IFactory {

    AbstractProductA CreateProductA();

    AbstractProductB CreateProductB();

}

publicclass ConcreteFactory1 implements IFactory {

    @Override

    public AbstractProductA CreateProductA() {

       returnnew ProductA1();

    }

    @Override

    public AbstractProductB CreateProductB() {

       returnnew ProductB1();

    }

}

publicclass ConcreteFactory2 implements IFactory {

    @Override

    public AbstractProductA CreateProductA() {

       returnnew ProductA2();

    }

    @Override

    public AbstractProductB CreateProductB() {

       returnnew ProductB2();

    }

}

优点:可以解决表格型结构对象的创建。如下图:

缺点:抽象工厂结构比较复杂,而且增加一个功能(功能C)就要修改所有的工厂类。

工厂的比较:3个工厂比较像是一个进化的过程!简单工厂针对于单个对象,工厂方法针对抽象对象,而抽象工厂针对的是一个系列的抽象对象。个人感觉抽象工厂其实是相对完善的(完善=复杂)。不是每一个程序都选择完善,而是选择简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值