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("民工");
}
}
最后结果
********代办点工作开始********
找相关部门审查贷款材料是否符合申请条件
找相关部门审批贷款
财务盖章,贷款审批通过
********代办点工作结束********
贷款办理完成, 个人凭身份证去银行相关部门领取抵押贷款合同和银行卡
恭喜,又一房奴产生
感觉这样应该清楚了吧,欢迎拍砖
分享到:
相关推荐
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数...
matlab程序打包成java jar包,java程序调用的时候需要javabuilder.jar
【Java面试题】builder模式
此文件为实现java调用matlab程序的jar包
23种设计模式的java实现-Builder
java设计模式之Builder&Decorator,java设计模式之Builder&Decorator
Builder模式 设计模式 Builder模式
Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的...
FreeBuilder为 Java 1.6 自动生成 Builder 模式。当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页背景在 Java 中实现 Builder 模式容易出错和...
demo中使用了设计模式中的建造者模式,代码非常精简,本地可正常运行,亲测有效!
23种设计模式之四(创建型模式)Builder模式
Java设计模式:Builder模式应用案例[整理].pdf
Java设计模式:Builder模式应用案例[借鉴].pdf
Builder模式代码-一个java类 Builder模式代码-一个java类
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步...下面这篇文章主要给大家介绍了在Java各个版本中Builder模式实现的相关资料,文中介绍的非常详细,需要的朋友可以参考学习。
设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...
各个设计模式的介绍,非常不错 Java与设计模式 设计模式之Factory -工厂模式设计模式之FACTORY METHOD -工厂模式設計模式之Builder -建造模式
matlab 与 Java 联合调用 jar包支持