【设计模式】建造者模式与工厂方法模式区别

来源:互联网 发布:淘宝中秋节活动策划 编辑:程序博客网 时间:2024/04/27 23:16

工厂方法模式:

把一个类的实例化延迟到它的子类中,核心的工厂类不负责所有产品的创建,而是将具体创建的工作交给子类去做。让子类决定实例化哪一个类。即抽象工厂角色。

1.关注的属性的不同

2.基于接口和抽象类的


抽象工厂模式:
向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。既提供一个创建一系列相关或相互以来对象的接口,而无需指定它们的具体的类,这就是抽象工厂模式的用意。是工厂方法模式的进一步推广。

建造者模式: 

建造者模式将一个产品的内部表象和产品的生成过程分开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象

需要构造的对象非常复杂,而调用者不需要知道这些细节。例如模仿一个特殊的编译器,该编译器编译所有源代码,将其链接,然后压缩,最后加密。有多个类:Editor(编辑器)、Builder(构建器)、Compiler(编译器)、Linker(链接器)、Compressor(压缩器)、Encryptor(加密机)

建造模式的关键是导演角色,这个角色掌握了零件对象的状态和产品的整体组装蓝图。没有了这个角色,建造模式就不是建造模式。当然,导演角色可以同时持有几种蓝图,按照需要给出完全不同的组装结果。

1.是关注的行为的不同 

2.基于抽象类


建造者模式最主要功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了;而工厂方法则重点是创建,你要什么对象我创造一个对象出来,组装顺序则不是他关心的。





    

0 0