前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【GoF 23】篇2:工厂方法

【GoF 23】篇2:工厂方法

作者头像
CODER-V
发布2023-03-11 09:54:01
1590
发布2023-03-11 09:54:01
举报
文章被收录于专栏:藏经阁

1. 什么是工厂方法?

工厂方法类似简单工厂,只不过将对象实例化延迟到了子类来实现。

工厂方法定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类。

好处:在父类不知道具体实现的情况下,完成自身功能的调用;而具体的实现延迟到子类来实现。

2. 代码示例

定义一个创建对象的接口:

代码语言:javascript
复制
// 创建对象的接口
public interface Product {...}

定义接口实现类

代码语言:javascript
复制
// Product实现类
public class ProductImpl implements Product{...}

定义创建对象类,一般为抽象类,该类就是工厂方法

代码语言:javascript
复制
//工厂方法,用于创建对象,但是不直接在这里创建,而是延迟到子类创建
public abstract calss ProductCreator {
	// 创建对象的抽象方法
	protected abstract Product factoryMethod();
}

在抽象类子类中创建接口对象

代码语言:javascript
复制
public class ProductCreatorImpl extends ProductCreator  {
	protected Product factoryMethod(){
		return new ProductImpl();//创建Product实例
	}
}

从代码可以看出,我们并没有在工厂方法中直接创建对象,而是将其延迟到了,子类来创建。工厂类只是定义了一些功能,并没有提供具体的实现,正好满足抽象类的条件,因而常常定义为一个抽象类。

3. 适用场景

  • 工厂方法是站在设计原则的角度来设计的。(适用于架构师)
  • 简单工厂是站在具体业务场景中设计的。(适用于编码者)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是工厂方法?
  • 2. 代码示例
  • 3. 适用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档