设计模式之建造者模式
来源:互联网 发布:云安全软件下载 编辑:程序博客网 时间:2024/06/06 19:33
设计模式之建造者模式
什么时候用建造者模式:
创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
我们需要建一个复杂的产品例如一部手机,而且这个复杂产品的建造需要处理一个问题即装配这些子组件。
开发中的应用场景:
Stringbuilder中的append方法
sql中PreStatement
建造者模式怎么用
建造者模式通常包括的角色:
- builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。
- ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。
- Director:给出一个抽象接口,这个接口规定组装的方法。
- ConcreteDirector:实现Director接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。
- Product:要创建的复杂对象。
建造者模式的结构图:
code:
package Builder;//创建一个phone类public class Phone { private Battery battery;// 电池 private Motherboard motherboard;// 主板 public Battery getBattery() { return battery; } public void setBattery(Battery battery) { this.battery = battery; } public Motherboard getMotherboard() { return motherboard; } public void setMotherboard(Motherboard motherboard) { this.motherboard = motherboard; }}class Battery { private String name; public Battery(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}class Motherboard { private String name; public Motherboard(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
package Builder;//构建子组建public interface PhoneBuilder { Battery buildebattery();// 电池 Motherboard buildemotherboard();// 主板}
package Builder;//装配public interface PhoneDirector { Phone DirectPhone();// 组装phone}
package Builder;public class huaweiBuilder implements PhoneBuilder { @Override public Battery buildebattery() { System.out.println("构建电池"); return new Battery("huawei电池");//这里可以和工厂模式结合 } @Override public Motherboard buildemotherboard() { System.out.println("构建主板"); return new Motherboard("huawei主板"); }}
package Builder;public class huaweiDirector implements PhoneDirector { public huaweiDirector(huaweiBuilder buider) { this.buider = buider; } private huaweiBuilder buider; public huaweiBuilder getBuider() { return buider; } public void setBuider(huaweiBuilder buider) { this.buider = buider; } @Override public Phone DirectPhone() { Battery battery = buider.buildebattery(); Motherboard motherboard = buider.buildemotherboard(); Phone phone = new Phone(); phone.setBattery(battery); phone.setMotherboard(motherboard); return phone; }}
package Builder;public class Client { public static void main(String[] args) { huaweiBuilder buider = new huaweiBuilder(); huaweiDirector director = new huaweiDirector(buider); Phone phone = director.DirectPhone(); System.out.println(phone.getBattery().getName()); System.out.println(phone.getMotherboard().getName()); }}
为什么要用建造者模式
使用建造者模式的好处:
1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
0 0
- 设计模式之建造者
- 设计模式 之 建造者
- 设计模式之建造者
- 设计模式之建造者模式
- 设计模式之建造者模式
- 五 设计模式之建造者模式
- 设计模式之建造者模式
- C# 设计模式之 建造者模式
- 【设计模式】之 Builder 建造者模式
- 设计模式之建造者模式学习
- 设计模式之建造者模式
- 设计模式笔记之---建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- JVM系列:jvm基本结构
- 借助postman实现模拟登陆
- JSP页面报javax.servlet.jsp.PageContext cannot be resolved to a type 错误
- Linux基本命令
- mysql行转列、列转行
- 设计模式之建造者模式
- Leetcode 448(Java)
- redis cluster 添加 删除 重分配 节点
- 综合用户特征及专家信任的协作过滤推荐算法
- 如何将服务器传来的字符串转成HTML显示在前端页面
- rman report obsolete的问题
- Android Things专题2 硬件介绍
- 阻塞模式和非阻塞模式
- java中 final 与 static