设计模式之——建造者模式
设计模式:
前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定。而是一套用来提高代码可复用性、可维护性、可读性、稳健性、以及安全性的解决方案
设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
正确使用设计模式具有以下优点:
- 可以提高程序员的思维能力、编程能力和设计能力。
- 使程序设计更加标准化、代码编制更加I程化,使软件开发效率大大提高,从而缩短软件的开发周期。
- 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
- 建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。
- 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
- 主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
- 用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
- 例子:
工厂(建造者模式) : 负责制造汽车(组装过>程和细节在工厂内)
汽车购买者(用户):你只需要说出你需要的>型号(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组装的(车轮、车门、>发动机、方向盘等等) )
优点:
◆产品的建造和表示分离,实现了解耦。使用建造者模式可以使客户端不必知道产品内部组成的细节。
◆将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰
◆具体的建造者类之间是相互独立的,这有利于系统的扩展。增加新的具体建造者无需修改原有类库的代码,符合“开闭原则”。
缺点:
◆建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
◆如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。
下面是实现的代码
核心程序逻辑,builder用于建造,调用不同的建造模块能建造不同的产品
/*** @Descrintion:指挥,推动工作的进程以及规定方式,工程的核心* @version: 1.0*/
public class Director {/*** 指挥工人按照指定顺序做某事,需要进行调整的时候,进行切换调用顺序即可* @param builder* @return*/public Product builer(Builder builder){builder.builderGround();builder.builderSteel();builder.builderElectricWire();builder.builderPaint();return builder.getProduct();}
}
工程的核心,推动公司进程以及按照规定的方式进行
/*** @Descrintion:指挥,推动工作的进程以及规定方式,工程的核心* @version: 1.0*/
public class Director {/*** 指挥工人按照指定顺序做某事,需要进行调整的时候,进行切换调用顺序即可* @param builder* @return*/public Product builer(Builder builder){builder.builderGround();builder.builderSteel();builder.builderElectricWire();builder.builderPaint();return builder.getProduct();}
}
工人模块,用于建造者的建造工作,不同的工人可以进行不同的建造,主要是对建造的实现化
/*** @Descrintion:具体的建造者,工人去完成任务* @version: 1.0*/
public class Worker extends Builder {private Product product;public Worker() {this.product = new Product();}@Overridevoid builderGround() {product.setBuilderGround("建造地基");System.out.println("建造地基");}@Overridevoid builderSteel() {product.setBuilderSteel("搭建钢筋");System.out.println("搭建钢筋");}@Overridevoid builderElectricWire() {product.setBuilderElectricWire("铺设电路");System.out.println("铺设电路");}@Overridevoid builderPaint() {product.setBuilderPaint("粉刷墙面");System.out.println("粉刷墙面");}@OverrideProduct getProduct() {return product;}
}
产品,JavaBean类,表示产品
/*** @Descrintion:产品——房子* @version: 1.0*/
public class Product {private String builderGround;//建造地基private String builderSteel;//搭建钢筋private String builderElectricWire;//铺设电路private String builderPaint;//粉刷墙面@Overridepublic String toString() {return "Product{" +"builderGround='" + builderGround + '\'' +", builderSteel='" + builderSteel + '\'' +", builderElectricWire='" + builderElectricWire + '\'' +", builderPaint='" + builderPaint + '\'' +'}';}public String getBuilderGround() {return builderGround;}public void setBuilderGround(String builderGround) {this.builderGround = builderGround;}public String getBuilderSteel() {return builderSteel;}public void setBuilderSteel(String builderSteel) {this.builderSteel = builderSteel;}public String getBuilderElectricWire() {return builderElectricWire;}public void setBuilderElectricWire(String builderElectricWire) {this.builderElectricWire = builderElectricWire;}public String getBuilderPaint() {return builderPaint;}public void setBuilderPaint(String builderPaint) {this.builderPaint = builderPaint;}
}
接下来就是测试类,用于测试建造者模式建造的优点
/*** @Descrintion:* @version: 1.0*/
public class Test {public static void main(String[] args) {//指挥Director director = new Director();//指挥具体的工人,顺序完成某事,不同的工人,可以完成不同的事情,有平房,有高楼,不同能力的人可以进行不同的建造Product builer = director.builer(new Worker());System.out.println(builer.toString());}
}
建议编写或者,复制代码进行演示…这样理解的会更快
设计模式之——建造者模式相关推荐
- 建造者模式java_java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- Java设计模式(建造者模式-适配器模式-桥接模式)
Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- java设计模式 建造模式_理解java设计模式之建造者模式
理解java设计模式之建造者模式 发布于 2020-12-10| 复制链接 摘记: 建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中&qu ...
- 建造者模式 php,PHP设计模式之建造者模式定义与用法简单示例
本文实例讲述了PHP设计模式之建造者模式.分享给大家供大家参考,具体如下: 建造者模式: 将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1). 来点我人类能听懂的话: 1.在客户端看来需 ...
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...
- 学习《图说设计模式》建造者模式
图说设计模式之建造者模式 1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这 ...
- 实践GoF的23种设计模式:建造者模式
本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...
- java设计模式之建造者模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- python设计模式之建造者模式
python设计模式之建造者模式 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...
最新文章
- 15分钟学会MyEclipse导出jar文件再装换成exe可执行文件
- Java培训分享:零基础怎么学习Java?
- bootstrap中表格大小设置_bootstrap 设置table - td宽度问题
- 程序员-真实学习之路
- mysql数据库的优缺点
- ASP.NET MVC:Razor 引入命名空间
- [20151126]IMPDP TRANSFORM参数.TXT
- 05-简单的输入输出
- 研究生数学建模竞赛准备
- Cisco IOS镜像文件的下载地址
- 利用HTML完成登陆界面设计
- vmware桌面云建设项目方案建议书(包含GPU)
- 绿盟 java 面试_绿盟科技校园招聘面试经验|面试问题(共52条)- 职业圈
- 百度指数 数据分析(介绍)
- 使用OpenCV实现运动背景的重建
- 负数(一):猎人的过冬“法宝”
- html中出现弹窗偏右,打印机打印某些网页时,右边总是打印不全,怎么办
- Echat 地图样式格式
- matlab实现移位寄存器,基于matlab的移位寄存器法m序列的产生
- 原油价格接近七年高位-对冲基金预测2022年原油价格突破105美元