设计模式总结01-简单工厂模式与工厂方法模式
简单工厂模式:
1.客户要要一台电脑,告诉‘工厂’,‘工厂’给客户生产出来
2.客户要要一台彩电,告诉‘工厂’,‘工厂’给客户生产出来
工厂方法模式:
1.客户找‘电脑工厂’给客户生产出来一台能上网的设备
2.客户找‘家电工厂’给客户生产出来一台能接收电视节目的设备
简单工厂模式中,客户只提供参数,工厂根据参数生产出具体的对象产品,比如说:客户要一台笔记本 那就告诉工厂我要一台笔记本,工厂就根据客户的参数“笔记本”生产出来笔记本,当然存在不能生产的情况 应该说客户给定的参数和工厂能生产的产品存在对应关系 这个关系的判断过程存在于工厂中
而工厂方法模式中,客户直接通过工厂找到子工厂生产。在工厂方法模式中,客户并不需要知道这个产品叫什么 比如说:客户想要一个能上网、办公的设备,然后客户找了电脑厂 电脑厂给了客户一个设备,客户不需要关心这个谁被是台式机还是笔记本或者说是什么型号的。 子工厂能生产的具体产品跟子工厂是对应的 而客户不需要关心具体的产品叫什么 其实潜意识里应该说是客户知道这个产品能干什么
1. 结构复杂度
简单工厂模式只需一个工厂类;而工厂方法模式的工厂类随着产品类个数增加而增加,从而增加了结构的复杂程度。
2.代码复杂度
代码复杂度和结构复杂度是一对矛盾,既然简单工厂模式在结构方面相对简洁,那么它在代码方面肯定是比工厂方法模式复杂的了。简单工厂模式的工厂类随着产品类的增加需要增加很多方法(或代码),而工厂方法模式每个具体工厂类只完成单一任务,代码简洁。
3.客户端编程难度
工厂方法模式虽然在工厂类结构中引入了接口从而满足了开放-封闭原则,但是在客户端编码中需要对工厂类进行实例化。
而简单工厂模式的工厂类是个静态类,在客户端无需实例化,这无疑是个吸引人的优点。