Re:Android 设计模式-Builder

估计是这周工作日的最后一篇了,刚才总监和我说又有新任务了。。明明昨天二期才刚结束呜呜呜呜呜呜呜呜呜呜。

Builder模式,我的理解就是当初始化一个对象特别复杂或者不同的调用顺序会产生不同结果时,使用builder模式那是极好的。废话不多说,上代码。

想象一个场景。造人怎么样???哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

来个实体类Lady!!!

public class Lady {

    private static final String TAG = Lady.class.getSimpleName();


    private String name;//姓名
    private int age;//年龄
    private int height;//身高
    private String education;//学历
    private Cup cup;//????


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public String getEducation() {
        return education;
    }

    public void setEducation(String education) {
        this.education = education;
    }

    public Cup getCup() {
        return cup;
    }

    public void setCup(Cup cup) {
        this.cup = cup;
    }


    void show() {
        Log.i(TAG, this.toString());
    }


    @Override
    public String toString() {
        return "我叫" + name  +
                ", 今年" + age + "岁~" +
                ", 身高" + height + "cm" +
                ", " + education + "毕业" +
                ", 那个~~~~~罩杯是。。。" + cup +
                "-Cup yeah!!";
    }

    enum Cup {//????
        AA, A, B, C, D, E, F
    }

}
OK,正题我们的Builder类

class LadyBuilder {

    private final LadyParams ladyParams;

    public LadyBuilder() {
        ladyParams = new LadyParams();
    }

    public LadyBuilder setName(String name) {
        ladyParams.name = name;
        return this;
    }

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

    public LadyBuilder setHeight(int height) {
        ladyParams.height = height;
        return this;
    }

    public LadyBuilder setEducation(String education) {
        ladyParams.education = education;
        return this;
    }

    public LadyBuilder setCup(Lady.Cup cup) {
        ladyParams.cup = cup;
        return this;
    }


    public Lady create() {
        Lady lady = new Lady();
        lady.setName(ladyParams.name);
        lady.setAge(ladyParams.age);
        lady.setHeight(ladyParams.height);
        lady.setEducation(ladyParams.education);
        lady.setCup(ladyParams.cup);
        return lady;
    }


    private static class LadyParams {//Holder类,用于保存状态
        private String name;//姓名
        private int age;//年龄
        private int height;//身高
        private String education;//学历
        private Lady.Cup cup;//????
    }

}
好的,我都不知道需要加什么注解。最后调用代码。

Lady lady = new LadyBuilder()
                .setName("小瑶妹")
                .setAge(18)
                .setHeight(155)
                .setEducation("本科")
                .setCup(Lady.Cup.A)
                .create();
        lady.show();
请开始您的表演,小瑶妹~~

01-10 15:02:06.582 18093-18093/com.hzly.text I/Lady: 我叫小瑶妹, 今年18岁~, 身高155cm, 本科毕业, 那个~~~~~罩杯是。。。A-Cup yeah!!

OVER

我的天Builder好简单。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值