初识、理解生成器模式

来源:互联网 发布:qq群淘客软件 编辑:程序博客网 时间:2024/05/21 04:42

声明:这部分是号主学习“研磨设计模式”的笔记以及部分思考。

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
什么意思呢?可以简单理解为:按照同一过程操作产生不同结果。生成器模式最核心的地方是分离,分离什么呢?分离的是对象的构建过程和过程的细节(或者是具体实现),这样让程序结构更具松散耦合。
生成器模式的结构图:
生成器模式结构图

Builder:生成器接口,定义一个Product对象所需要的各个部件的操作。
ConcretaBuilder:具体的生成器实现,实现各个部件的创建,并负责组装Product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法。
Director:指导者,主要用来使用Builder接口,以一个统一的过程来构建所需要的Product对象。
Product:产品,被生成器构建的复杂对象,包含多个部件。
理解:比如要生产不同的产品,但这个产品的生产步骤5步都一样,但每一步的具体细节却不一样,并且,这些产品的组成部分是一样的。此时这5个步骤由Director来组装,但每个操作的具体细节在Builder的实现类中实现。

生成器模式的本质:分离整体构建算法和部件构造。
由Director宏观指导,由builder负责具体实现。
理解:生成器模式的重心在于分离构建算法和具体的构造实现,从而使得构建算法可以重用,具体的构造实现可以很方便的扩展和切换,从而可以灵活的组合来构造出不同的产品对象。

什么时候选用生成器模式呢?
如果创建对象的算法(具体的创建对象细节)独立于对象的组成部分以及它们的装配方式(构建过程或者叫组装过程)时,可以选用。
如果同一个构建过程有着不同的表示。

怎么使用呢?
让客户端创造Director,在Director里封装了整体构建算法,然后让Director去调用Builder,Builder里封装了具体部件的构建功能。
还有一种退化的情况,就是让客户端和Director融合起来,客户端直接去操作Builder.

0 0
原创粉丝点击