Builder模式关键是在建立对象是一步一步处理

package customer;class Starbucks
{private String size;private String drink;public void setSize(String size){this.size = size;}public void setDrink(String drink){this.drink = drink;}
}abstract class StarbucksBuilder
{protected Starbucks starbucks;public Starbucks getStarbucks(){return starbucks;}public void createStarbucks(){starbucks = new Starbucks();System.out.println("a drink is created");}public abstract void buildSize();public abstract void buildDrink();
}class TeaBuilder extends StarbucksBuilder
{public void buildSize(){starbucks.setSize("large");System.out.println("build large size");}public void buildDrink(){starbucks.setDrink("tea");System.out.println("build tea");}
}class CoffeeBuilder extends StarbucksBuilder
{public void buildSize(){starbucks.setSize("medium");System.out.println("build medium size");}public void buildDrink(){starbucks.setDrink("coffee");System.out.println("build coffee");}
}class Waiter
{private StarbucksBuilder starbucksBuilder;public void setStarbucksBuilder(StarbucksBuilder builder){starbucksBuilder = builder;}public Starbucks getstarbucksDrink(){return starbucksBuilder.getStarbucks();}public void constructStarbucks(){starbucksBuilder.createStarbucks();starbucksBuilder.buildDrink();starbucksBuilder.buildSize();}
}public class Customer {public static void main(String[] args) {Waiter waiter = new Waiter();StarbucksBuilder coffeeBuilder = new CoffeeBuilder();waiter.setStarbucksBuilder(coffeeBuilder);waiter.constructStarbucks();Starbucks drink = waiter.getstarbucksDrink();}}

Builder与Factory模式的区别:

Builder模式要很多步来创建对象,而Factory模式只需要一个方法调用就能创建对象


java设计模式:Builder模式相关推荐

  1. Java设计模式——Builder模式

    前言 之前写Android程序的时候,经常会用到Dialog(对话框)这个控件.我们在使用Dialog,比如AlertDialog的时候就用到了这里要说明的Builder模式.现在我们来看一下这样的一 ...

  2. Java设计模式-Builder模式

    Builder模式是将一个复杂对象的创建和表示分离,使同样的创建过程可以创建不同的表示.它属于建造类模式. 一般来说,如果一个对象的创建比较复杂,超出了构造方法所能包含的范围,就可以使用工厂模式和Bu ...

  3. Java 设计模式 --- Template 模式 Java Template 模式 Java 模板设计模式

    Java 设计模式 --- Template 模式 Java Template 模式 Java 模板设计模式 一.概述 模板设计模式: 父类定义通用抽象的功能方法,子类负责具体的实现. 本文将以一个通 ...

  4. Java 设计模式——建造者模式(Builder Pattern)

    前言 一.简介 ​二.实现方式 三.常见第一种方式 (1)一般有以下几个角色 (2)举个例子 (3)具体步骤 (4)具体代码 三.第二种方式 (1)主要有三个角色:抽象建造者.具体建造者.产品 (2) ...

  5. 重学Java设计模式-创建者模式-建造者模式

    重学Java设计模式-创建者模式-建造者模式 内容摘自:重学 Java 设计模式:实战建造者模式「各项装修物料组合套餐选配场景」 | bugstack 虫洞栈 建造者模式介绍 图片来自:https:/ ...

  6. 设计模式-Builder模式

    目录 一个例子(做汤) 人工做汤 机器做汤(使用Builder模式) 优缺点 优点 缺点 Builder模式属于创建型模式. 它是将一个复杂对象的构建过程隐藏起来,让使用者只关系自己要生成什么样的对象 ...

  7. Java 设计模式——状态模式

    概述 很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像.你可以阅读<Java设计模式--策略模式>这篇博客,并与本文对比,以找到蛛丝马 ...

  8. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  9. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  10. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

最新文章

  1. hdu4169_Wealthy Family_树形DP(2011美国区域赛)
  2. 以下哪个不是迭代算法的缺点_海量数据分库分表方案(一)算法方案
  3. PTA 1002 Business (35分)
  4. Python+matplotlib数据可视化鼠标悬停自动标注功能实现
  5. bzoj 3036: 绿豆蛙的归宿(Dp)
  6. RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
  7. Win7开机动画图片下载大全 修改攻略
  8. 微信v3版本-native支付和支付宝支付接口对接
  9. Googler为什么很幸福?
  10. 通过c语言求得一个英文句子中的单词数量
  11. 进入 32 位时代,谁能成为下一个8051?
  12. The tomcat server configuration at /sever/tomcat v9.0 localhost-config is.......错误解析
  13. dell出现插入耳机无提示,无反应
  14. java 实现繁简字体转换(笨方法)
  15. 新生宝宝办证-STEP1-出生证明办理
  16. 图书管理系统java课设_JavaGUI图书管理系统(可作课程设计)
  17. Linux--增加用户、添加用户组
  18. 各大高校自曝状态一览 排名不分先后
  19. 爬取拉勾网上求职信息,并导入Excel(记录代码贴)
  20. 平凡人的一生的意义是什么?

热门文章

  1. Codeforces Round #265 (Div. 2) E. Substitutes in Number
  2. Struts2+Android (3) 多种方式向服务器发送信息
  3. 设计模式心得笔记--简单工厂
  4. 更改WSSv3站点集访问地址
  5. php中sql where,sql?where
  6. mysql 查询优化器跟踪_3. select语句执行过程-优化器
  7. 从零开始学习python-如何从零开始学python?
  8. python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法
  9. python怎么打开交互式窗口-如何在交互式环境中执行Python程序
  10. python输出价目表-Python:使用基于事件驱动的SAX解析XML