创建型设计模式(一)工厂方法模式

我需要一辆汽车,那我可以直接从工厂里面提货,而不用去管汽车是怎么做出来的,以及生产汽车的具体实现,我只需要告诉这个工厂要生产什么品牌的汽车就好,具体的汽车生产过程我也不用管。

二、使用场景

使用场景:知道部分特性而创建具体对象的场景。

如:根据环境类型(dev,test或master等)直接调用一整套环境配置

优点:

客户端不需要在负责对象的创建,明确了各个类的职责

如果有新的对象增加,只需要增加一个具体产品类和具体的工厂类即可

不会影响已有的代码,后期维护容易,增强系统的扩展性

缺点:

需要额外的编写代码,增加了工作量【额外编写具体工厂类和具体产品类】

与简单工厂的区别:

简单工厂:工厂类包含了具体的逻辑判断,增加类型时需要修改工厂类代码

工厂方法:工厂类只定义生成抽象产品的方法,增加类型时不需要修改原来的工厂类代码,但需要新增工厂类和实现工厂类的具体产品类

三、模型分析

工厂定义创建抽象产品的方法,由具体工厂去实现,生成具体产品

抽象产品定义产品的共有属性和方法,由具体产品去继承

具体工厂实现/继承工厂类,生产具体产品

具体产品实现/继承抽象产品

创建型设计模式(一)工厂方法模式

四、UML类图

创建型设计模式(一)工厂方法模式

五、代码分析 工厂

/** * 汽车工厂【工厂】 */ public interface CarFactory { /** * 生产汽车的方法 */ Car produceCar(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjswj.html