Android中的Builder模式

来源:互联网 发布:asp php 编辑:程序博客网 时间:2024/06/04 18:51

各位工程师在代码中肯定遇到过这种创建对象的方法 new Builder.setAge(2).setName(“战三”).setSex(“男”).build;

没错这就是传说中的Builder模式。

1.     Builder介绍

  Builder模式是一步一步创建一个复杂对象的创建模式,它允许用户在不知道内部构造细节的情况下,可以精细的控制对象的创建流程。该模式是为了将构建复杂的对象的过程和他的部件解耦,是得构建过程和部件的表示隔离开来。

因为一个复杂的对象有很多大量的组成部分,例如人,有眼、鼻、手、脚等各种组成,如何将这些部件组成一人,这要经过复杂的孕育,为了在构建过程中对外隐藏细节,就可以使用Builder模式将这些部件和组装过程分离,使得构建过程和部件都可以对外自由扩展,两者之间的耦合度也降到最低。

2.     Builder模式的定义

将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

3.     Builder模式的使用场景

(1)      相同方法不同的执行顺序,产生不同的事件结果时。

(2)      多个部件或零件,都可以装配到到一个对象中,但是产生的运行结果又不同时。

(3)      产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造这模式非常合适,

(4)      当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时。

4.     Builder的简单使用

5. publicclassPerson {
   
private Stringname;
    private float
height;
    private int
age;

    private
Person(Builderbuilder) {
       
name =builder.name;
       
height =builder.height;
       
age =builder.age;
   
}

   
public static final class Builder {
       
private Stringname;
        private float
height;
        private int
age;

        public
Builder() {
        }

       
public Buildername(String name) {
           
this.name= name;
            return this;
       
}

       
public Builderheight(floatheight) {
           
this.height= height;
            return this;
       
}

       
public Builderage(intage) {
           
this.age= age;
            return this;
       
}

       
public Personbuild() {
           
return new Person(this);
       
}
    }
}

 

 

在代码中使用

new Person.Builder().age(2).build();
原创粉丝点击