设计模式之建造者模式
来源:互联网 发布:mac更新文件夹在哪里 编辑:程序博客网 时间:2024/06/05 08:27
需求:
汽车制造,包扩车轮,发动机,方向盘,车灯,其他
这里,我们需要流程化的搞这些制造,但是由于所有汽车制造都需要这些流程,为了保证这些流程的挣钱性,咋办呢?
这里就需要用到我们得建造者模式
建造者模式通常包括以下这几个角色:
1、Builder:给出一个抽象接口,规范建造者对于生产的产品的各个组成部分的建造。这个接口只是定一个规范,不涉及具体的建造,具体的建造让继承于它的子类(ConcreteBuilder)去实现。
2、ConcreteBuilder:实现builder接口,针对不同的商业逻辑,具体化各对象部分的建造,最后返回一个建造好的产品。
3、Director:导演,顾名思义,负责规范流程之用。在指导中不涉及产品的创建,只负责保证复杂对象各部分被创建或按某种顺序创建。
4、Product:复杂对象。
建造者模式的UML图:
实现:
Product:
public class Car { private String chelun; private String fadongji; private String fangxiangpan; private String chedeng; private String qita; public String getChelun() { return chelun; } public void setChelun(String chelun) { this.chelun = chelun; } public String getFadongji() { return fadongji; } public void setFadongji(String fadongji) { this.fadongji = fadongji; } public String getFangxiangpan() { return fangxiangpan; } public void setFangxiangpan(String fangxiangpan) { this.fangxiangpan = fangxiangpan; } public String getChedeng() { return chedeng; } public void setChedeng(String chedeng) { this.chedeng = chedeng; } public String getQita() { return qita; } public void setQita(String qita) { this.qita = qita; }}
然后建造者抽象类:
abstract class Builder { public abstract void buildChelun(); public abstract void buildFadongji(); public abstract void buildFangxiangpan(); public abstract void buildChedeng(); public abstract void buildQita();}
然后是具体建造者:
public class CarBuilder extends Builder { public void buildChelun() { System.out.println("第一步,建车轮"); } public void buildFadongji() { System.out.println("第二步,建发动机"); } public void buildFangxiangpan() { System.out.println("第三步,建方向盘"); } public void buildChedeng() { System.out.println("第四步,建车灯"); } public void buildQita() { System.out.println("第五步,建其他的东西"); }}
最后是导演:
public class CarDirector { private Builder builder; public CarDirector(Builder builder){ this.builder=builder; } public void construct(){ builder.buildChelun(); builder.buildFadongji(); builder.buildFangxiangpan(); builder.buildChedeng(); builder.buildQita(); }}
测试:
public class testbuild { public static void main(String[] args) { CarBuilder c = new CarBuilder(); CarDirector cd = new CarDirector(c); cd.construct(); }}
输出:
第一步,建车轮
第二步,建发动机
第三步,建方向盘
第四步,建车灯
第五步,建其他的东西
现在需要再搞个大巴的制造,该肿么办呢?哈哈。。。
建造者模式优点:
1、将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,使得我们能够更加精确的控制复杂对象的产生过程。 2、将产品的创建过程与产品本身分离开来,可以使用相同的创建过程来得到不同的产品。也就说细节依赖抽象。 3、每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者, 用户使用不同的具体建造者即可得到不同的产品对象。
缺点:
因此其使用范围受到一定的限制。
2、如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。
应用场景:
1、需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。 2、隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。
0 0
- 设计模式之建造者
- 设计模式 之 建造者
- 设计模式之建造者
- 设计模式之建造者模式
- 设计模式之建造者模式
- 五 设计模式之建造者模式
- 设计模式之建造者模式
- C# 设计模式之 建造者模式
- 【设计模式】之 Builder 建造者模式
- 设计模式之建造者模式学习
- 设计模式之建造者模式
- 设计模式笔记之---建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- request工具类
- HttpApplication处理对象与HttpModule处理模块 (第三篇)
- ping和telnet的区别
- 最简单的贝叶斯分类器演示(含Matlab程序)
- HttpApplication实战大文件上传 (第四篇)
- 设计模式之建造者模式
- FTP YUM 源配置
- linux 安装mysql数据库——yum安装法
- Asp.net 处理程序(第五篇)
- iTunes connect Testflight 2017-04-20改版后的内部测试执行流程
- React-Native 打包发布
- dede 时间调用标签格式大全
- [Spring boot] web应用返回jsp页面
- git 常用命令行