用建造者模式,为你创建一个女朋友

版权声明:转载请注明出处 https://blog.csdn.net/dl10210950/article/details/70578231

什么是建造者模式( 摘自百度百科)
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

啥意思呢

比如你要创建一个女朋友,他有很多的属性,比如:性别,年龄,身高,体重,类型等等,虽然每个女朋友都有这些属性,但是每个人找女朋友的要求都是不一样的,有的人喜欢男的,有的人喜欢女的,有的喜欢胖的,不同的人可以根据自己的喜好去建造不同的女朋友,我们不需要关系她是怎么建造的,我们只需要去指定她的属性就行了

相比如文字解释,我更习惯撸代码来解释,下面来一步步实现怎么用建造者模式来为你创建一个女朋友

首先定义一个女朋友类

package duanlian.buildlerdemo;

/**
 * Created by ${DuanLian} on 2017/4/24.
 */

public class GirlFriend {
    private String sex;//性别
    private int age;//年龄
    private int stature;//身高
    private int weight;//体重
    private String type;//类型

}

按照我们以往的理解,要创建一个女朋友是不是要直接new出来,我们可以通过构造方法把属性传过去
例如:我对女朋友的要求只有一个,是女的就行,定义一个构造方法:

public GirlFriend(String sex) {
        this.sex = sex;
    }

然后再需要的时候来创建她:

  GirlFriend girlFriend = new GirlFriend("女");

如果我们要求性别和身高就要定义:

 public GirlFriend(String sex, int stature) {
        this.sex = sex;
        this.stature = stature;
    }

你想想每个人的要求都不一样,你得创建多少个构造方法,而且参数多了,可读性很差比如:

 GirlFriend girlFriend = new GirlFriend("女",22,170,100,"萝莉型");

你不点击去看源码,你怎么知道这些个参数是什么意思

下面我们用建造者模式来实现这个

建造一个GirlFriendBuilder类

package duanlian.buildlerdemo;

/**
 * Created by ${DuanLian} on 2017/4/24.
 */

public class GirlFriendBuilder {
     String sex;//性别
     int age;//年龄
     int stature;//身高
     int weight;//体重
     String type;//类型

    public GirlFriendBuilder setSex(String sex) {
        this.sex = sex;
        return this;
    }

    public GirlFriendBuilder setAge(int age) {
        this.age = age;
        return this;
    }

    public GirlFriendBuilder setStature(int stature) {
        this.stature = stature;
        return this;
    }

    public GirlFriendBuilder setWeight(int weight) {
        this.weight = weight;
        return this;
    }

    public GirlFriendBuilder setType(String type) {
        this.type = type;
        return this;
    }

    /**
     *返回一个GirlFriend对象
     */
    public GirlFriend build() {
        return new GirlFriend(this);
    }
}

然后再GirlFriend类里面构造方法传入GirlFriendBuilder对象

public GirlFriend(GirlFriendBuilder builder) {
        this.sex = builder.sex;
        this.age = builder.age;
        this.stature = builder.stature;
        this.weight = builder.weight;
        this.type = builder.type;
    }

然后创建的时候:

GirlFriend girlFrie1nd = new GirlFriendBuilder()
                .setAge(22)
                .setSex("女")
                .setType("萝莉型")
                .setStature(165)
                .build();

这样就成功创建了一个女朋友,代码的可读性也高了

有不对的地方,请指正

猜你喜欢

转载自blog.csdn.net/dl10210950/article/details/70578231
今日推荐