创建类模式大PK
创建模式包括工厂方法模式、建造者模式、抽象工厂方法、单例模式和原型模式,它们都能够提供对象的创建和管理指着。
其中的单例模式和原型模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个对象。
工厂方法模式 VS 建造者模式
工厂方法模式注重的是整体对象的创建方法,一个工厂专门生产一个对象,而建造者模式注重的是部件构件的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。
如要制造一个超人,如果使用工厂方法模式,直接产生出来的就是一个力大无穷、能够飞翔、内裤外穿的超人;而如果使用建造者模式,则需要组装手、头、脚、躯干等部分,然后在把内裤外穿,构造一个超人。
意图不同
工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。
产品的复杂度不同
工厂方法模式创建的产品一般都是单一性质产品,如成年超人,都是一个模样。而建造者模式创建的则是一个复合产品,它由各个部件复合而成,部件不同 产品对象也就不同。
抽象工厂模式 VS 建造者模式
抽象工厂模式实现对产品家族的创建,一个从产品家族是这样的一系列产品:具有不同分类维度的产品组合。
抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可。主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。
建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零件配件而产生一个新产品。
抽象工厂模式解决“系列对象”的需求变化,建造者模式解决“对象部分”的需求变化。