1.关系类图

2.建造者模式介绍

定义:指将一个复杂的对象的构造与它表示分离,使同样构建过程不同的表示,这样的设计模式被称为建造者模式.它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成的.它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的.优点:1)封装性好,构建与组成部分必须相同,其限制了使用范围.2)扩展性好,各个具体建造者相互独立,有利于系统的解耦3)客户端不必知道产品组成细节,建造者可以创建过程逐渐细化,而不对其他模块产生任何影响,便于控制  细节风险缺点:1)产品组成部分必须相同,这限制了其使用范围2)如果产品内部变化复杂,内部发生变化,则建造者需要同步修改,后期维护成本比较大建造者模式与工厂模式的关注点不同:建造者模式注重零部件的组装过程,而过程方法模式各部分注重零部件的创建过程

3.代码实现

//产品:客厅
public class Parlour {private String wall;    //墙private String TV;    //电视private String sofa;    //沙发 public void setWall(String wall) {this.wall = wall;}public void setTV(String TV) {this.TV = TV;}public void setSofa(String sofa) {this.sofa = sofa;}@Overridepublic String toString() {return "Parlour{" +"wall='" + wall + '\'' +", TV='" + TV + '\'' +", sofa='" + sofa + '\'' +'}';}
}//抽象建造者
public abstract class Decorator {//创建产品对象protected Parlour product = new Parlour();public abstract void buildWall();public abstract void buildTV();public abstract void buildSofa();//返回产品对象public Parlour getResult() {return product;}}//具体建造者
public class ConcreteDecorator extends Decorator {public void buildWall() {product.setWall("w1");}public void buildTV() {product.setTV("TV1");}public void buildSofa() {product.setSofa("sf1");}}//指挥者:项目经理
public class ProjectManager {private Decorator builder;public ProjectManager(Decorator builder) {this.builder = builder;}//产品构建与组装方法public Parlour decorate() {builder.buildWall();builder.buildTV();builder.buildSofa();return builder.getResult();}
}//客户端public static void main(String[] args) {Decorator decorator=new ConcreteDecorator();ProjectManager projectManager = new ProjectManager(decorator);Parlour parlour = projectManager.decorate();System.out.println(parlour);}

设计模式篇04-建造者模式相关推荐

  1. 从零开始学习Java设计模式 | 创建型模式篇:建造者模式

    在本讲,我们来学习一下创建型模式里面的最后一个设计模式,即建造者模式. 概述 建造者模式是指将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示. 读完这句话之后,我估计很多人都已经懵 ...

  2. 大聪明教你学Java设计模式 | 第二篇:建造者模式

    前言 大聪明在写代码的过程中发现设计模式的影子是无处不在,设计模式也是软件开发人员在软件开发过程中面临的一般问题的解决方案.大聪明本着"独乐乐不如众乐乐"的宗旨与大家分享一下设计模 ...

  3. 设计模式之路 | 建造者模式

    模式的定义与特点 建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式.它是将一个复杂的对象分解为多个简单的对象 ...

  4. 设计模式系列之建造者模式构建实体类

    设计模式系列之建造者模式(Build Pattern)构建实体类 模式定义 建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法. 所谓建造者模式就是**将组件和组件的组件过 ...

  5. Java 设计模式情景分析——建造者模式

    当我们遇到类似汽车的装配,需要车轮.方向盘.发动机,还有各种小零件时,为了在构建过程中隐藏实现细节,就可以使用建造者模式 (Builder模式) 将部件和组装过程分离,使得构建过程和部件都可以自由扩展 ...

  6. Java设计模式10,建造者模式

    目录 一.建造者模式 二.建造者模式的结构 1.抽象建造者(Builder) 2.具体建造者(ConcreteBuilder) 3.指挥者(Director) 4.产品(Product) 三.建造者模 ...

  7. 设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)

    建造者模式 建造者模式的概念 Builder 模式也叫建造者模式或者生成器模式,是由 GoF 提出的 23 种设计模式中的一种. Builder 模式是一种对象创建型模式之一,用来隐藏复合对象的创建过 ...

  8. 设计模式二:建造者模式

    建造者模式 想要创建一个由多个部分构成的对象,而且他的构成需要一步接一步地完成.只有当各个部分都创建好,这个对象才是完整的.这时就需要建造者模式 建造者设计模式:将一个复杂对象的构造过程与其表现分离, ...

  9. 【设计模式自习室】建造者模式

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该设计模式的详细介绍,包括: 引子,意图(大白话解释) 类图,时序图(理论规范) 该模式的代码示例: ...

  10. 设计模式 之美 -- 建造者模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现 C语言实现 C++实现 4. 缺点 1. 解决问题 描述如下场景: 类的数据成员很多(8个以上),当我们进行初始化的时候放在初始化列表中,影响类的 ...

最新文章

  1. 浅析 SpringMVC 中返回对象的循环引用问题
  2. mysql导出数据到s3_mysql导出数据库几种方法
  3. 一文读懂深度学习:这个AI核心技术被美国掌控,很危险
  4. bootstraptable获取所有数据_一键获取oracle用户下所有表的表名与其数据量
  5. CentOS 下 rpm包与 yum 安装与卸载
  6. php 多维素组添加下级,php中如何将元素添加到多维数组
  7. NOR flash and NAND flash
  8. SQLite FTS3/FTS4与一些使用心得
  9. mysql 定时器停止_mysql事件【定时器】
  10. NoSql中的B-tree、B+tree和LSM-tree
  11. Java正則表達式詳解
  12. HWPFDocument读取doc,wps文档(含图片读取)
  13. 安装浏览器的vue插件
  14. uni-app 官网教程
  15. 红黄绿灯控制系统c语言,微机课设-红、黄、绿灯的控制系统设计.doc
  16. 安装拼音加加时出现问题
  17. 中安未来护照阅读器助力电子客票的推广和落实让你的出行说走就走
  18. 动态分析Android App之动态调试(一)
  19. UE4利用Save Game创建全局变量
  20. Isito - Rate Limits(请求限速)- 再战

热门文章

  1. js 运行中断停止_如何终止 JS 脚本的运行
  2. python连接sql server数据库(pyodbc)
  3. 百度网盘批量重命名工具怎么用,百度网盘怎么批量修改文件名
  4. html 用css画出斑马线,使用css实现斑马线(面试转载)
  5. python中pandas库的使用(excel读取)
  6. 美摄短视频SDK上线:搭建多端产品,只需一套代码
  7. 数据库系统原理填空题
  8. Node.js配合WebSocket实现网页斗地主(一、环境配置)
  9. post上传图片获取不到值
  10. DVB-S相关术语说明