您的位置:首页 > 产品设计 > UI/UE

设计模式---建造者模式(Builder)模式

2017-12-24 17:31 225 查看
资料来源于《Android设计模式》和网友资料

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对象的值赋值给外部类对象成员)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: