建造者模式
来源:互联网 发布:淘宝提交订单系统异常 编辑:程序博客网 时间:2024/06/01 08:33
建造者模式
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式主要用于创建一下复杂的对象,这些对象内部构件的建造顺序通常是稳定的,但对象内部的构建通常面临复杂的变化。
建造者模式主要涉及4个部分:
- 抽象建造者:定义创建一个产品对象的各个部件的接口。
- 具体建造者:实现抽象建造者,构造和装配各个部件。
- 指挥者:构建一个使用抽象建造者的对象。
- 具体产品:产品本身。
生产一辆车,需要建造发动机、车轮等,车辆在这里就是具体产品。车辆建造者定义了建造发动机、车轮的接口,承担了抽象建造者的角色。小轿车建造者是一个具体的建造者,用于建造小轿车这一个类型。指挥者负责组装车辆。
- 车辆
public class Vehicle { List<String> partList = new ArrayList<>(); public void addPart(String part) { partList.add(part); } public void show() { for (String part : partList) { System.out.println(part); } }}
- 车辆建造者
public interface VehicleBuilder { void buildEngine(); void buildWheel(); Vehicle getVehicle();}
- 小轿车建造者
public class SedanBuilder implements VehicleBuilder { private Vehicle vehicle = new Vehicle(); @Override public void buildEngine() { vehicle.addPart("one engine"); } @Override public void buildWheel() { vehicle.addPart("four wheel"); } @Override public Vehicle getVehicle() { return vehicle; }}
- 指挥者
public class Director { private VehicleBuilder vehicleBuilder; public Director(VehicleBuilder vehicleBuilder) { this.vehicleBuilder = vehicleBuilder; } public void assembleCar() { vehicleBuilder.buildEngine(); vehicleBuilder.buildWheel(); }}
- 客户端测试类
public class Client { public static void main(String[] args) { VehicleBuilder vehicleBuilder = new SedanBuilder(); Director director = new Director(vehicleBuilder); director.assembleCar(); Vehicle vehicle = vehicleBuilder.getVehicle(); vehicle.show(); }}
运行结果:
one engine
four wheel
建造者模式实现了建造代码与表示的分离,产品的内部表示由具体建造者负责,而组装过程迁移到指挥者来单独实现。并且具体建造者之间是相互独立的,有利于程序的扩展,如果需要修改产品的内部表示,只需要再定义一个具体的建造者就可以了。
1 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- android-Device Administration设备管理器
- cplusplus--001--MFC多线程共享内存
- 设计模式之备忘录模式(Memento)
- 谈谈自己架构选择
- android-Spinner样式
- 建造者模式
- 使用腾讯云Ubuntu服务器搭建MySQL+Tomcat+jdk
- unity总结四
- Oracle数据库基础知识点
- Android退出应用最优雅的方式
- 经典门限秘密共享方案
- 蚂蚁感冒
- 【linux】--初识Linux
- 有关opencv的学习(16)—图像的膨胀和腐蚀(2)