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

设计模式之工厂模式(factory pattern)

作者头像
Java架构
发布2020-04-24 10:37:16
6170
发布2020-04-24 10:37:16
举报
文章被收录于专栏:Java架构师学习Java架构师学习

基本定义

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式让实例化推迟到子类。

模式结构

Product :抽象产品。所有的产品必须实现这个共同的接口,这样一来,使用这些产品的类既可以引用这个接口。

ConcreteProduct:具体产品。

Creator:抽象工厂。它实现了所有操纵产品的方法,但不实现工厂方法。Creator所有的子类都必须要实现factoryMethod()方法。

ConcreteCreator:具体工厂。制造产品的实际工厂。它负责创建一个或者多个具体产品。

模式实现:

Product 抽象产品类

ConcreteProduct 具体产品类

Factory 抽象工厂类

ConcreteFactory 具体工厂类

测试类

执行结果

09:46:41.447[main]INFOcom.yanyuan.gof.build.factory.v2.HuaweiPhone - 华为手机拨打貂蝉电话

09:46:41.463[main]INFOcom.yanyuan.gof.build.factory.v2.IPhone - iPhone手机拨打小乔电话

优缺点

优点

在工厂方法中,用户只需要知道所要的产品的具体工厂,无须关系具体的创建过程,甚至不需要具体产品类的名称。

在系统增加新产品时,我们只需要增加一个具体的产品类和实现工厂,无需对原工厂进行任何修改,很好的符合了“开闭原则”

缺点

每次增加一个产品时,都需要增加一个具体类和对象实现工厂,系统中类的个数会成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖

总结

工厂方法模式完全符合“开闭原则”

工厂方法模式使用继承,将对象委托给子类,通过子类实现工厂方法来创建对象

在工厂方法模式中,创建者通常包含依赖于抽象的产品代码,而这些抽象产品是由子类创建的,创建者不需要知道制作哪种具体产品

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

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

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

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

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