设计模式之三:抽象工厂模式

将多个工厂合并成一个,完成一系列多种实体的生产

如果说一个实体接口代表一种实体
那么简单工厂模式就是一种实体对应一个工厂,多种实体就需要多个工厂
当不同种类的实体有对应关系时,就可以合并成一个工厂


事例

每种水果都有自己的包装

实体关系如图:
在这里插入图片描述

实体类

public interface Bag {
}

public class AppleBag implements Bag {
}
public class OrangeBag implements Bag {
}

工厂类

public interface FruitFactory {
    Fruit getFruit();

    Bag getBag();
}

public class AppleFactory implements FruitFactory {
    @Override
    public Fruit getFruit() {
        return new Apple();
    }

    @Override
    public Bag getBag() {
        return new AppleBag();
    }
}
public class OrangeFactory implements FruitFactory {
    @Override
    public Fruit getFruit() {
        return new Orange();
    }

    @Override
    public Bag getBag() {
        return new OrangeBag();
    }
}

客户调用

	// 苹果
    public void produceApple(){
        AppleFactory appleFactory = new AppleFactory();
        Fruit fruit = appleFactory.getFruit();
        Bag bag = appleFactory.getBag();
        // 用Bag将Fruit打包的业务
    }
    // 柑橘
    public void produceOrange() {
        OrangeFactory orangeFactory = new OrangeFactory();
        Fruit fruit = orangeFactory.getFruit();
        Bag bag = orangeFactory.getBag();
        // 用Bag将Fruit打包的业务
    }

总结

优点(与工厂方法模式比)

  • 扩展性强
  • 可对应多种实体

缺点

  • 新增实体接口时,要修改工厂类

工厂模式总结

原则

  • 解耦。将对象的创建和使用分离
  • 黑盒创建。负责对象创建的整个过程
  • 面向接口编程。返回接口,而不是实现类
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈哈利波特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值