设计模式---建造者模式(Builder)模式
2017-12-24 17:31
225 查看
资料来源于《Android设计模式》和网友资料
1、建造者模式的意义
在构建时,对外部隐藏内部细节,将构建过程和部件都可以进行扩展,使他们的耦合程度降低。
2、使用场景
(1)相同的方法,执行不同的顺序,产生不同的事件结果
(2)多个部件或零件,都可以装配到一个对象中,但是产生的结果又不一样
(3)产品类非常复杂,或者产品类的调用顺序不同产生了不同的作用
(4)当初始化一个对象特别复杂,参数很多,很多参数都有默认值时。
3、使用示例
使用的时候就会:
Person person = new Person(“xx”,18,170);
这事一般的使用方式,或者也会加入其他的构造方法。。但是使用起来很不方便!!!这就需要建造者模式了
最后我们的使用方式就变成了:
Person.Builder builder = new Person.Builder()
Person person = builer.name(“xxx”)
.age(18)
.height(123)
.build(); //创建对象
关键在于:
1、定义一个静态的内部类Builder,内部类的成员变量和外部类的成员相同
2、Builder类通过getset方法操作成员变量,并返回对象本身。
3、Builder提供一个Builder方法创建外部类,该方法调用外部私有的构造方法,外部类的私有方法就是Bulider对象。
外部类提供一个私有的构造方法,在方法中完成赋值等操作(把Builder对象的值赋值给外部类对象成员)
1、建造者模式的意义
在构建时,对外部隐藏内部细节,将构建过程和部件都可以进行扩展,使他们的耦合程度降低。
2、使用场景
(1)相同的方法,执行不同的顺序,产生不同的事件结果
(2)多个部件或零件,都可以装配到一个对象中,但是产生的结果又不一样
(3)产品类非常复杂,或者产品类的调用顺序不同产生了不同的作用
(4)当初始化一个对象特别复杂,参数很多,很多参数都有默认值时。
3、使用示例
//我们一般使用的方式 public class Person{ private String name; private int age; private double height; //一般我们就创建这几个属性的构造方法 public Person(String name,int age,double height){ this.name = name; this.age = age; this.height= height; } //....一堆get、set方法 }
使用的时候就会:
Person person = new Person(“xx”,18,170);
这事一般的使用方式,或者也会加入其他的构造方法。。但是使用起来很不方便!!!这就需要建造者模式了
//建造者的写法 public class Person{ private String name; private int age; private double height; //一般我们就创建这几个属性的构造方法 private Person(Builder bulider){ this.name =bulider.name; this.age = bulider.age; this.height=bulider.height; } //....一堆get、set方法 //静态的Bulider类 static class Bulider{ private String name; private int age; private double height; public Bulider name(String name){ this.name= name; return this; } public Bulider age(int age){ this.age = age; return this; } public Bulider height(double height){ this.height= height; return this; } //最重要!!!! public Person builder(){ return new Person(this); } } }
最后我们的使用方式就变成了:
Person.Builder builder = new Person.Builder()
Person person = builer.name(“xxx”)
.age(18)
.height(123)
.build(); //创建对象
关键在于:
1、定义一个静态的内部类Builder,内部类的成员变量和外部类的成员相同
2、Builder类通过getset方法操作成员变量,并返回对象本身。
3、Builder提供一个Builder方法创建外部类,该方法调用外部私有的构造方法,外部类的私有方法就是Bulider对象。
外部类提供一个私有的构造方法,在方法中完成赋值等操作(把Builder对象的值赋值给外部类对象成员)
相关文章推荐
- java 23种设计模式--建造者模式(builder)
- 设计模式C++实现(3)——建造者模式(Builder)
- C++设计模式-Builder建造者模式
- 设计模式——建造者模式(Builder Pattern)
- java设计模式——建造者模式(Builder)
- 设计模式-建造者模式(Builder Pattern)
- JAVA设计模式四:---Builder(建造者模式)
- 【二】设计模式——建造者模式(Builder Pattern)
- 【设计模式】使用unity实现建造者模式(Builder mode)
- 设计模式C++学习笔记之十(Builder建造者模式)
- php设计模式 Builder(建造者模式)
- 设计模式(4)-建造者模式(Builder)
- java设计模式——建造者模式(Builder Pattern)
- JAVA设计模式------建造者模式(Builder模式)
- 设计模式-建造者模式(Builder Pattern)
- 浅谈JAVA设计模式之——建造者模式(Builder)
- C#设计模式(5)——建造者模式(Builder Pattern)
- [php]php设计模式 Builder(建造者模式)
- 设计模式--建造者模式Builder(创建型)
- 设计模式——建造者模式(BuilderPattern)