设计模式,三)建造者模式

技术设计模式,三)建造者模式 设计模式(三)建造者模式建造者模式建造者模式也属于创建模式,它提供了一种创建对象的最佳方式。
定义:将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

设计模式(三)建造者模式

建造者模式

建造者模式也属于创建模式,它提供了一种创建对象的最佳方式。

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

主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。

用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)

例子:

工厂(建造者模式):负责制造汽车(组装过程和细节在工厂内)

汽车购买者(用户):你只要说出你需要的型号(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组成的(车轮、车门、发动机、方向盘))等

比如建一个房子(地基,钢筋工程,铺垫线,粉刷等来实现)包工头首先建一个抽象类(Bulider),把产品的图纸(Product)给了工人,工人(worker)按照包工头的图纸去建造,然后老板(director)去指挥它们去实现。

Builder(一个整体的产品需要什么)

包裹。com。我的。工厂。建筑商;

//抽象的建造者:方法

公共抽象类生成器{

抽象void Buildera();//地基

抽象void BuildErab();//钢筋工程

抽象void BuildErac();//铺垫线

抽象void BuildErad();//粉刷

//完工:得到产品

抽象产品getProducT();

}

Product

包裹。com。我的。工厂。建筑商;

//产品:房子

公共类产品{

私有字符串建筑a

私有字符串构建b

私有字符串buildC

私有字符串构建;

公共字符串GetBuildA(){ 0

返回建筑a

}

public void setBuilda(String Builda){ 0

this.buildA=buildA

}

公共字符串GetBuildB(){ 0

返回构建b

}

公共void setBuildB(字符串BuildB){ 0

this.buildB=buildB

}

公共字符串GetBuildC(){ 0

返回buildC

}

public void setBuildc(String Buildc){ 0

this.buildC=buildC

}

公共字符串GetBuild(){ 0

返回构建

}

公共void setBuildD(字符串生成){ 0

this.buildD=buildD

}

@覆盖

公共字符串ToString(){ 0

返回"产品{"

buildA=' ' buildA ' \ ' '

,buildB=' ' buildB ' \ ' '

,buildC=' ' buildC ' \ ' '

,buildD=' ' buildD ' \ '

'}';

}

}

worker

包裹。com。我的。工厂。建筑商;

//具体的建造者:工人

公共类工人扩展了建筑商{

私人产品;

公共工作者(){ 0

产品=新产品();

}

@覆盖

void Builderaa(){ 0

product.setBuildA('地基');

System.out.println('地基');

}

@覆盖

void BuildErab(){ 0

product.setBuildA('钢筋');

System.out.println('钢筋');

}

@覆盖

void BuildErac(){ 0

product.setBuildA('铺垫线');

System.out.println('铺垫线');

}

@覆盖

void BuildErad(){ 0

product.setBuildA('粉刷墙面');

System.out.println('粉刷墙面');

}

@覆盖

产品GetProducT(){ 0

退货产品;

}

}

Directory

包裹。com。我的。工厂。建筑商;

//指挥:核心负责构建一个工程,工程如何构建,由它决定

公开课导演{

//指挥工人按顺序建房子

公共产品构建(构建器构建器){ 0

建筑商。build era();

建筑商。builder ab();

建筑商。builder AC();

建筑商。builder ad();

返回生成器。getProducT();

}

}

交工(测试)

包裹。com。我的。工厂。建筑商;

公共类测试{

公共静态void main(String[]参数){ 0

//指挥

董事董事=新董事();

//指挥具体的工人完成产品

产品构建=导演。build(新Worker());

字符串s=构建。ToString();

系统。出去。println

}

}

总结

上面的例子是Builder模式的常规方法。编导类在Builder模式中起着重要的作用。它用于指导如何构建产品、控制调用顺序以及将完整的产品类返回给调用。但是,在某些情况下,有必要简化系统结构,并将Director与抽象构建器结合起来。

另一种案列见建造者模式之链式编程

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116875.html

(0)

相关推荐

  • 抖音刷粉网,免费抖音刷粉工具?

    技术抖音刷粉网,免费抖音刷粉工具?抖音可以花钱购买粉丝,很多营销人员想购买粉丝在抖音上推广,这导致目前刷粉粉普遍是抖音。抖音官方公告正式发布,如果有刷粉,刷点赞,刷评论和其他行为将会被封号的,但事实上,找到一个定期刷粉平

    测评 2021年10月20日
  • Redis缓存的淘汰策略是什么

    技术Redis缓存的淘汰策略是什么这篇文章主要讲解了“Redis缓存的淘汰策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis缓存的淘汰策略是什么”吧!Re

    攻略 2021年10月27日
  • Dev-C++软件如何安装

    技术Dev-C++软件如何安装这篇文章给大家分享的是有关Dev-C++软件如何安装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装教程1、下载后鼠标右击压缩包解压 2、双击安装程序安装 3

    攻略 2021年11月18日
  • 橘去掉木念什么,橘子去掉木字旁加一个鸟子念什么

    技术橘去掉木念什么,橘子去掉木字旁加一个鸟子念什么读音:[yù]鹬的繁体字“鷸”一种鸟,羽毛茶褐色,嘴橘去掉木念什么、脚都很长,趾间无蹼,常在水边或田野中捕吃小鱼、小虫和贝类。鹬聚、蛎鹬、鹬冠、鹬子、鹬蚌鹬鹬、杓鹬属、鹬

    生活 2021年10月22日
  • c语言多线程详解(c语言多线程数据安全)

    技术C#多线程安全怎么理解这篇文章主要介绍“C#多线程安全怎么理解”,在日常操作中,相信很多人在C#多线程安全怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#多线程安全怎么理解”

    2021年12月22日
  • 转载:Promise输出题10道 加强理解

    技术转载:Promise输出题10道 加强理解 转载:Promise输出题10道 加强理解1.const promise = new Promise((resolve, reject) = {conso

    礼包 2021年10月20日