前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之抽象工厂模式(Abstract Factory Pattern)

设计模式之抽象工厂模式(Abstract Factory Pattern)

作者头像
Java架构
发布2020-04-23 16:50:47
3200
发布2020-04-23 16:50:47
举报
文章被收录于专栏:Java架构师学习

基本定义

抽象工厂模式提供一个接口,用户创建相关或者依赖对象的家族,而不需要明确指定具体类。

抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际产出的具体产品是什么,这样一来客户可以从具体的产品关系中解耦。

模式结构

AbstractFactory:抽象工厂。抽象工厂定义了一个接口,所有的具体工厂都必须实现此接口,这个接口包含了一组方法用来生产产品。

ConcreteFactory:具体工厂。具体工厂是用于生产不同产品族。要创建一个产品,客户只需要使用其中一个工厂完全不需要实例化任何产品对象。

AbstractProduct:抽象产品。这是一个产品家族,每一个具体工厂都能够生产一整组产品。

Product:具体产品。

模式实现

AbstractProductA 抽象产品类(电脑)

ConcreteProductA1 具体产品类(华为电脑)

ConcreteProductA2 具体产品类(苹果电脑)

AbstractProductB 抽象产品类(手机)​​​​​​​

ConcreteProductB1 具体产品类(华为手机)

ConcreteProductB2 具体产品类(苹果手机)

AbstractFactory 抽象工厂类

ConcreteFactory 具体工厂类1(华为工厂)

ConcreteFactory 具体工厂类2 (苹果工厂)

测试类

输出结果

23:19:12.427 [main] INFO com.yanyuan.gof.build.abstractFactory.v2.HuaweiPC - 使用华为电脑玩DOTA

23:19:12.459 [main] INFO com.yanyuan.gof.build.abstractFactory.v2.HuaweiPhone - 华为手机拨打西施电话

23:19:12.465 [main] INFO com.yanyuan.gof.build.abstractFactory.v2.ApplePC - 使用苹果电脑玩国际象棋

23:19:12.466 [main] INFO com.yanyuan.gof.build.abstractFactory.v2.IPhone - iPhone手机拨打程咬金电话

总结

抽象工厂模式中主要的优点在于具体类的隔离,是的客户端不需要知道什么被创建了。其缺点在于增加新的产品族比较复杂,需要修改接口及其所有子类。

工厂模式和抽象工厂模式主要区别在于产品,产品种类单一,适合工厂模式。抽象工厂模式适合用于创建多个产品种类,多个产品类型。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档