文档章节

学习设计模式——生成器模式

江左煤郎
 江左煤郎
发布于 10/16 23:24
字数 962
阅读 6
收藏 0

1. 认识生成器模式

    1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    2. 组成:

  • Builder:生成器接口,定义创建一个Product对象所需要的各个组件的操作,并且如何将各个组件装配到Product对象中
  • BuilderImpl:生成器实现类,实现各个部件的创建,并负责组装Product对象所需要的各个组件,同时提供一个让用户获取组装完成后的对象的方法。
  • Director:指导者,主要用于使用Builder接口,以一个统一的过程来构建一个所需要的Product对象,也就是说该部分负责Product对象的构造过程,只知道按照步骤调用Builder接口中生成并装配每个部件的方法。
  • Product:产品,表示被生成器构建的复杂对象,包含多个部件

    3. 参考代码实现:

public class Product {
	//定义产品中的一些操作或者变量
	
}
/**
 * @ClassName:Builder
 * @Description:定义用来创建部件的方法
 */
public interface Builder {
	//示意方法,构建某个部件
	public void buildPart();
}
/**
 * @ClassName:BuilderImpl
 * @Description:生成器的具体实现类
 */
/**
 * @ClassName:BuilderImpl
 * @Description:生成器的具体实现类
 */
public class BuilderImpl implements Builder {
	//生成器最终生成的对象
	private Product product=new Product();
	//将生成的对象返回给外界使用
	public Product getProduct(){
		return product;
	}
	//构建部件
	@Override
	public void buildPart() {
		
	}

}

/**
 * @ClassName:Director
 * @Description:指导使用构建器的接口来构建所需要的Product对象
 */
public class Director {
	//持有所需的builder
	private Builder builder;
	public Director(Builder builder){
		this.builder=builder;
	}
	//示意方法,指导使用构建器的接口来构建所需要的Product对象
	public void construct(){
		builder.buildPart();
	}
}
public class Client {
	public static void main(String[] args) {
		//创建生成器对象
		BuilderImpl builder=new BuilderImpl();
		Director d=new Director(builder);
		//通过指导器进行创建
		d.construct();
		//获取创建的对象
		Product p=builder.getProduct();
	}
}

2. 理解生成器模式

    1. 功能:用于构建复杂的对象,而且是将负责对象的构建分成了几个步骤模块,而且这个构建的过程是不变的、统一的,变化的部分在生成器中进行处理,同样的构建过程,在不同的生成器中就会构建不同的复杂对象。也就是说,生成器的重点在于分离复杂对象的构建过程与具体构建的实现,使得构建过程可以重复利用,而构建具体实现可以进行扩展和切换,从而灵活组合出不同的复杂对象。

    2. 生成器的实现:在生成器的每个构建方法中,都分为两部分功能,一部分是生成组件,另一部分是装配组件。在生成组件对象时,可以和工厂模式组合使用。

    3. 指导者的实现:指导者承担的是整体的构建过程,或者是构建算法,是一个统一不变的部分,指导者的实现并不是参考代码中的那么简单,仅仅按顺序调用方法,而是会有复杂的算法过程,在运算过程中根据需要来调用生成器的方法来创建部件对象。

    4. 优点:松散了程序的耦合度,可以很容易改变Product的内部表示,并且具有更好的复用性

    5. 本质:分离整体构建算法和部件构造

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
江左煤郎
粉丝 16
博文 69
码字总数 177701
作品 0
西安
后端工程师
私信 提问
设计模式笔录(二),设计模式有哪些

本人出道5年,学习、编程、再学习、再编程一路走过,只是在笔和纸留下些脚印,实感惭愧。现开始把自己学习到的心得,实践中的体会,一一贴在互联网上,大家互相学习、探讨,寻找一些技术朋友...

方旭
2011/03/31
0
0
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
10/18
0
0
你需要了解的23种JavaScript设计模式

为什么要学习设计模式? 在许多访谈中,你可能会遇到很多面向对象编程中的接口,抽象类,代理和以及其他与设计模式相关的问题。 一旦了解了设计模式,它会让你轻松应对任何访谈,并可以在你的...

java高级架构牛人
06/02
0
0
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
0
0
JavaScript常用设计模式

设计模式 设计模式是一种在长时间的经验与错误中总结出来可服用的解决方案。 设计模式主要分为3类: 创建型设计模式:专注于处理对象的创建 Constructor构造器模式,Factory工厂模式,Singl...

a独家记忆
07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day150-2018-11-17-英语流利阅读-待学习

歪果仁也疯狂:海外版抖音的征途 毛西 2018-11-17 1.今日导读 海外版抖音 TikTok 于 2017 年 5 月上线海外,至今覆盖全球 150 多个国家和地区,月活跃用户数已突破 5 亿。然而,“出海”的抖...

飞鱼说编程
今天
9
0
分布式学习最佳实践:从分布式系统的特征开始(附思维导图)

什么是分布式系统 回到顶部   分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法...

dragon_tech
今天
4
0
TOKEN设计

TOKEN设计 Api_Token 首先需要知道API是什么? API(Application Programming Interface)即应用程序接口。你可以认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而我们在...

DrChenXX
今天
3
0
浅谈“李氏代换”——从纪念金庸和斯坦李说起

李氏代换(LSP)简介 李氏代换是软件设计的一个原则,又名依赖倒转原则或依赖倒置原则,其衍生原则有接口分离原则等。该原则由Barbara Liskov于1988年提出。 该原则指出,程序中高级别的元素...

SamYjy
今天
36
0
JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部