1. 定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2. 结构图
Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作。
ConcreteBuilder:具体的生成器实现,实现各个部件的创建,并负责组装Product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法。
Director:指导者,也被称为导向者,主要用来使用Builder接口,以一个统一的过程来构建所需要的Product对象。
Product:产品,表示被生成器构建的复杂对象,包含多个部件。
3. 本质
生成器模式的本质:分离整体构建算法和部件构造。
构建一个复杂的对象,本来就有构建的过程,以及构建过程中具体的实现。生成器模式就是用来分离这两个部分,从而使得程序结构更松散、扩展更容易、复用性更好,同时也会使得代码更清晰,意图更明确。
虽然在生成器模式的整体构建算法中,会一步一步引导Builder来构建对象,但这并不是说生成器主要就是用来实现分步骤构建对象的。生成器模式的中心还是在于分离整体构建算法和部件构造,而分步骤构建对象不过是整体构建算法的一个简单表现,或者说是一个附带产物。
4. Code Demo
Product.java
package org.fool.pattern.builder; public interface Product { }
Builder.java
package org.fool.pattern.builder; public interface Builder { public void buildPart(); }
ConcreteBuilder.java
package org.fool.pattern.builder; public class ConcreteBuilder implements Builder { private Product resultProduct; public Product getResult() { return resultProduct; } @Override public void buildPart() { System.out.println("build part..."); } }
Director.java
package org.fool.pattern.builder; public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } public void construct() { builder.buildPart(); } }
Client.java
package org.fool.pattern.builder; public class Client { public static void main(String[] args) { ConcreteBuilder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct(); builder.getResult(); } }
相关推荐
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/1033310
C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) 体验课程
文章地址:https://blog.csdn.net/mazhiyuan1981/article/details/110638833
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第4节:创建型模式Builder生成器模式
Builder(生成器)模式[文].pdf
【设计模式】- 生成器模式(Builder)(csdn)————程序
在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一个产品的构造过程,并允许按步骤构造”,感觉说得不是很清楚。而在网上查找相关资料是这么解释的,建造者模式(Builder Pattern)使用多个简单...
java设计模式之生成器模式,希望对大家有所帮助。
C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) (Level 300)
C#视频-面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)
Builder(生成器)模式借鉴.pdf
Builder(生成器)模式参照.pdf
Builder(生成器)模式定义.pdf
宏海科技代码生成器(1.0 bete) 使用说明: 采用三层模式生成代码 ,每个层都分为两部分 Auto文件夹为自动生成的完整代码,外面的为用户自己写方法用。 1: 先将三层搭建好(实在懒的话,一个项目也行),添加好引用,...
FreeBuilder为 Java 1.6 自动生成 Builder 模式。当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页背景在 Java 中实现 Builder 模式容易出错和...
主要介绍了C#设计模式之Builder生成器模式解决带老婆配置电脑问题,简单介绍了生成器模式的概念、功能并结合具体实例形式分析了C#生成器模式解决配电脑问题的步骤与相关操作技巧,需要的朋友可以参考下
myeclipse插件配置代码生成器和指导
该项目演示了如何使用.NET 5 Source生成器来自动生成类的生成器模式。 有关此项目的完整详细信息,。 请注意,这是有效的POC样本,而不是生产等级代码。它有什么作用变成这个[ GenerateBuilder ]public partial ...
自动为Java 1.8+生成Builder模式 当设计类的构造函数或静态工厂将具有多个参数的类时,Builder模式是一个不错的选择。 —有效的Java,第二版,第39页 背景 在Java中实现非常繁琐,容易出错且重复。 谁没有看过一个...