Builder模式定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
为何使用?
是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件.
为了简单说明,下面用办理贷款模拟 builder 模式的实现
先说下思路,一民工在买房的时候没钱要办理贷款,房产交易大厅下面很多银行的代办点,于是跑过去打听,接待他的是个漂亮小MM,一听说是打听贷款办理,喜上眉梢,心想又一笨蛋房奴上钩了,便热情地跟你介绍他们的办理手续,手续简单,只要提供相应的材料到前台,办理完申请以后就可以回去等消息了,太热情了,民工激动得内牛满面,决定办了,提供了相应的材料到前台办了个贷款申请手续,完了被告知回去等电话通知就可以了,过了三四个月终于接到电话通知,让带上证件去银行某某部门领取抵押贷款合同书和银行卡,于是民工终于成为了一个真正的房奴了。。。
在整个贷款办理过程中所有的过程都是在银行里面办理的,完全是由代办点帮你去相应的部门办理过了,如果不经过代办点的话那么民工就要自己去这些部门逐个办理一次,对于本来就天天加班累死了的民工来说经常请假往银行跑是件很头疼的事情,有了代办点,因为他们是批量办理,轻车熟路,要方便得多,办理好了当然还是要民工本人去银行签字领房屋抵押合同和银行卡。
这个例子当中代办点封装了贷款申请办理的复杂的流程,因为实际流程可能会很多,民工不需要知道中间的申请过程,只要去填个表就可以等着通知去银行领合同了。
不废话了,上代码
package patterns.builder.sample3;
// 贷款办理接口
public interface ICredit {
// 资料审核
void step_1();
// 贷款审批
void step_2();
// 财务盖章
void step_3();
// 领取贷款合同
Contract getContract(String name);
}
贷款办理的具体流程实现
package patterns.builder.sample3;
public class Credit implements ICredit {
public Contract getContract(String name) {
System.out.println("贷款办理完成, 个人凭身份证去银行相关部门领取抵押贷款合同和银行卡\n恭喜,又一房奴产生");
return new Contract(name);
}
public void step_1() {
System.out.println("找相关部门审查贷款材料是否符合申请条件");
}
public void step_2() {
System.out.println("找相关部门审批贷款");
}
public void step_3() {
System.out.println("财务盖章,贷款审批通过");
}
}
银行代办点MM
package patterns.builder.sample3;
public class Staff {
private ICredit credit;
public Staff(ICredit credit) {
this.credit = credit;
}
// 贷款办理
public void creditHandler() {
System.out.println("********代办点工作开始********");
credit.step_1();
credit.step_2();
credit.step_3();
System.out.println("********代办点工作结束********");
}
}
房奴的商标
package patterns.builder.sample3;
// 贷款抵押合同
public class Contract {
private String name;
public Contract(String name) {
this.name = name;
}
}
最后民工上钩
package patterns.builder.sample3;
public class Customer {
public static void main(String[] args) {
ICredit credit = new Credit();
Staff staff = new Staff(credit);
staff.creditHandler();
Contract contract = credit.getContract("民工");
}
}
最后结果
********代办点工作开始********
找相关部门审查贷款材料是否符合申请条件
找相关部门审批贷款
财务盖章,贷款审批通过
********代办点工作结束********
贷款办理完成, 个人凭身份证去银行相关部门领取抵押贷款合同和银行卡
恭喜,又一房奴产生
感觉这样应该清楚了吧,欢迎拍砖
分享到:
相关推荐
matlab程序打包成java jar包,java程序调用的时候需要javabuilder.jar
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数...
在Java中,Builder模式通常包含四个主要角色:Product(产品),Builder(建造者),ConcreteBuilder(具体建造者)和Director(导演)。Product是被构建的对象,Builder定义了产品的构造接口,ConcreteBuilder实现...
Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常应用于...
【Java面试题】builder模式
在 Java 开发中,Builder 模式是一种强大的创建型模式,它允许我们逐步构建复杂的对象。本文将详细介绍 Builder 模式的意图、解释、编程示例、适用场景以及实际应用。同时,还将提供示例代码的下载链接,方便读者...
在Java中,Builder模式的一个经典例子是`java.util.StringBuilder`和`java.lang.StringBuffer`,它们提供了链式操作的方法来构建字符串,如`append()`,`insert()`等,这样用户可以逐步添加内容,而无需一次性提供...
此文件为实现java调用matlab程序的jar包
Java Builder 模式是一种用于构建复杂对象的设计模式,它可以将对象的构建过程与其表示分离,使得构建过程更加灵活和可维护。本文将通过一个实例讲解 Java Builder 模式构建 MAP/LIST 的过程,从而帮助读者更好地...
**建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...
### Builder模式:构建复杂对象的艺术 #### 概述 Builder模式是一种软件工程设计模式,它将复杂对象的构建过程与其表示分离,使同一构建过程能够创建出不同的表示。这一模式通常用于创建复合对象,通过子类继承和...
在Java或者其他面向对象编程语言中,Builder模式经常被用来提高代码的可读性和可维护性。 Builder模式的核心包括四个角色:Product(产品类)、ConcreteBuilder(具体建造者)、Builder(抽象建造者)和Director...
在Java中,Builder模式通常用来处理那些具有大量可选参数的对象,避免了使用长参数列表或者复杂的构造函数。 在Java 8之前,Builder模式的实现通常涉及以下步骤: 1. 定义一个`Order`类,包含多个属性如`code`、`...
Java设计模式中的Builder模式和Decorator模式是两种重要的设计模式,它们在软件开发中起到优化代码结构、提高代码复用性和灵活性的作用。 1. 建造者模式(Builder) 建造者模式是一种创建型设计模式,它的主要目的...
在Java编程中,Builder模式提供了一种更加灵活、结构化的创建对象的方式,避免了构造函数的过度膨胀和JavaBean属性设置的繁琐。下面我们将深入探讨Builder模式的核心概念、工作原理以及如何在实际开发中应用。 首先...
Java Builder模式实现原理及优缺点解析 Builder 模式中文名为建造者模式,是一种对象创建型模式,旨在将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder 模式的定义 Builder ...
Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的...
FreeBuilder为 Java 1.6 自动生成 Builder 模式。当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页背景在 Java 中实现 Builder 模式容易出错和...