前言
在之前我们已经讲到了工厂模式之简单工厂
的使用,大家有兴趣的话,可参考以下文章
工厂模式(一)—工厂模式简介
工厂模式(二)—简单工厂
工厂模式(三)—简单工厂优化(静态调用)
这节我们来讲下工厂方法
方法模式
今天涉及内容:
-
工厂方法模式
的定义 - 为什么要使用
工厂方法模式
- 工厂方法模式的使用
一. 工厂方法模式的定义
这个其实在第一节已经讲过了,其描述如下:
工厂方法模式:定义一个创建对象的接口,由其子类来决定要实例化的类是哪一个,工厂方法模式将实例化延迟到子类中
描述比较生硬,大体意思是,在简单工厂
中我们的工厂是直接建对象的,而在工厂方法
中,我们是提供一个对象类别的方法,然后让子类去实现。
为什么这样设计呢?下面接着讲。
二. 为什么要使用 工厂方法模式
在简单工厂
中,我们不难看出,只要我们有新的对像要创建,我们必须去修改对象创建工厂CarFactory
的代码,这其实是违背代码设计的开闭原则
。什么是开闭原则
呢?简单来说就是
写过的代码具有极强的扩展性,后来者只能在我写的代码基础上扩展,而不要修改我的代码
这种设计原则的初衷是避免修改已稳定的代码而带来不稳定性。
而简单工厂
的设计是违背开闭原则
的,所以才产生工厂方法模式
来规避这个问题。
工厂方法模式
采用的优化方式是将简单工厂
的直接创建对象变成提供创建对象的接口,由后来者去确定具体的对象,从而避免修改先行者已写好的代码。
三. 工厂方法模式的使用
与之前一样,场景仍是奥迪车
和奔驰车
取名。
那么第一步要建要做的事的接口,即取名
接口:
网友评论