【Design Pattern】Builder模式的一种实现
来源:互联网 发布:mysql 删除某个字段 编辑:程序博客网 时间:2024/05/02 00:53
应用场景
如果需要根据多个不同的参数来创建某类的不同对象,很常见的方法是定义多个构造器以供不同场合下的调用。但有一种更好的构造方法,我们可以使用Builder模式来实现(前提是多个构造参数)。
示例(汽车类及其Builder构造器)
public class Car { private final int seet; private final String engine; private final int dormer; private final int speed; private final int color; public static class Builder{ private int seet; private String engine; // Optional parameters private int dormer; private int speed; private int color; public Builder(int seet, String engine){ this.seet = seet; this.engine = engine; } public Builder dormer(int val){ this.dormer = val; return this; } public Builder speed(int val){ this.speed = val; return this; } public Builder color(int val){ this.color = val; return this; } public Car build(){ return new Car(this); } }; private Car(Builder builder){ this.seet = builder.seet; this.engine = builder.engine; this.dormer = builder.dormer; this.speed = builder.speed; this.color = builder.color; }}
演示制造汽车过程(不同的汽车需要不同的部件):
public class Main { public static void main(String[] args) { Car car1 = new Car.Builder(4, "power").dormer(1).speed(1000).color(255).build(); Car car2 = new Car.Builder(2, "awesome").speed(2000).color(122).build(); }}
这样自由组合的不停的build,是不是有点酷?
延伸
为实现更好的伸缩性,Builder类可独立出来,并且继承于某个Builder接口。另外,从上例可以看出,Builder重定义了一遍Car类的属性,其实现是需要消耗一定的性能的;所以当可选参数较少时,并不建议使用这样的Builder模式。
- 【Design Pattern】Builder模式的一种实现
- Design Pattern: Builder 模式
- 生成器设计模式(Builder Design Pattern)
- design pattern Builder 建造者设计模式
- Design Pattern: Builder Pattern(建造者模式)
- Design Pattern 1-builder
- [Design Pattern]:Builder
- design pattern : Builder
- Delphi Design Pattern - Builder
- Design Pattern--Builder
- Design Pattern:Builder
- Java Design Pattern: Builder
- Design Pattern_Java:Builder Pattern
- 设计模式4 - 构建者模式Builder Design Pattern
- 设计模式实现(四): Builder Pattern
- C++实现设计模式:Builder Pattern
- Design Pattern - Builder(C#)
- Builder design pattern in java
- 驱动编程之阻塞与非阻塞
- 在一个字符串中找到第一个只出现一次的字符
- Oracle Business Intelligence Enterprise Edition (OBIEE) 11g安装
- LDA-math-神奇的Gamma函数
- 使用DBCP或C3P0存储二进制抛出异常
- 【Design Pattern】Builder模式的一种实现
- 【Hadoop】RPC Server Workflow
- 位运算超强总结
- 《c和指针》笔记--宏插入到字符串常量
- Eclipse安装JavaScript智能提示插件
- ZOJ3705Applications
- 八皇后问题
- poi excel 字体竖着显示
- 调试amligic m6 mx mid板子总结