Java设计模式之建造者模式(Builder模式)
2018-01-05 22:26
603 查看
Java设计模式之建造者模式(Builder模式)
Builder模式是用于构建复杂对象的一种模式。是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用Builder模式来替代多参数构造函数是一个比较好的实践法则。
场景
车分很多种如:汽车:名字,价格,有发动机,有棚子
电动三轮车:名字,价格,有棚子
自行车:名字,价格,不堵车
其实为每个车写一个构造函数也可以实现,但是当车子多了,就不便于维护了。创建者模式就是解决这一类问题
应用举例
定义一个多功能的车/** * Created by yunzhao.liu on 2017/12/27 */ public class Car { private String name;//名字 private int price;//价格 private boolean isTrafficjam;//堵车 private boolean isHaveEngine;//发动机 private boolean isHaveShed;//棚子 public static class Builder { private String name;//名字 private int price;//价格 private boolean isTrafficjam;//堵车 private boolean isHaveEngine;//发动机 private boolean isHaveShed;//棚子 // 构建的步骤 public Builder() { } public Builder setName(String name) { this.name = name; return this; } public Builder setPrice(int price) { this.price = price; return this; } public Builder setTrafficjam(boolean trafficjam) { isTrafficjam = trafficjam; return this; } public Builder setHaveEngine(boolean haveEngine) { isHaveEngine = haveEngine; return this; } public Builder setHaveShed(boolean haveShed) { isHaveShed = haveShed; return this; } public Car build() { // 构建,返回一个新对象 return new Car(this); } } private Car(Builder b) { name = b.name; price = b.price; isTrafficjam = b.isTrafficjam; isHaveEngine = b.isHaveEngine; isHaveShed = b.isHaveShed; } @Override public String toString() { return "Car{" + "name='" + name + '\'' + ", price=" + price + ", isTrafficjam=" + isTrafficjam + ", isHaveEngine=" + isHaveEngine + ", isHaveShed=" + isHaveShed + '}'; } }
测试类
/** * Created by yunzhao.liu on 2017/12/27 * 测试类 */ public class TestBuilder { public static void main(String[] args) { //奥迪A6 Car aodi = new Car.Builder() .setName("奥迪A6") .setPrice(200000) .setTrafficjam(true) .setHaveEngine(true) .setHaveShed(true) .build(); String s1 = aodi.toString(); System.out.println(s1); //三轮车 Car tricycle = new Car.Builder() .setName("三轮车") .setPrice(2500) .setHaveEngine(true) .setHaveShed(true) .build(); String s2 = tricycle.toString(); System.out.println(s2); //自行车 Car bicycle = new Car.Builder() .setName("自行车") .setPrice(300) .setTrafficjam(false) .build(); String s3 = bicycle.toString(); System.out.println(s3); } }
4000
相关文章推荐
- 设计模式之建造者模式java(Builder)
- JAVA设计模式:建造者(Builder)
- 设计模式Builder模式——java设计模式——建造者模式
- Java设计模式-----Builder建造者模式
- Java设计模式-----Builder建造者模式
- JAVA设计模式-建造者模式-Builder
- Java设计模式(5)——创建型模式之建造者模式(Builder)
- Java设计模式之建造者(Builder)模式
- 【java设计模式】之 建造者(Builder)模式
- 【java类的设计模式—02】建造者模式(Builder pattern)
- java23种常用设计模式之建造者模式(Builder)升级版实例
- Java设计模式之建造者模式(Builder模式)介绍
- 【java设计模式】之 建造者(Builder)模式
- Java设计模式之建造者模式(Builder)
- JAVA设计模式之 建造者模式【Builder Pattern】
- java23种设计模式之建造者模式(Builder)
- 【java】java 设计模式(4):建造者模式(Builder)
- java设计模式-Builder建造者模式
- Java设计模式--建造者模式【Builder Pattern】
- Java设计模式三:建造者模式(Builder Pattern)