安卓设计模式之Builder

安卓有很多设计模式,现在我们来说说构建者模式。


什么是构建者模式?

参考网上的描述:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

我是这么理解的,假如你想组装一台电脑主机来玩游戏,可是你又不懂组装的方式。所以我们需要请会组装的人来帮忙。那组装一台主机需要知道你想要什么样的处理器,内存条,硬盘啊,等等。这样既然请别人帮忙了,我们只需要告诉他我需要装什么样的零件。那么这样你就省去了自己组装的烦恼。

总之,简单来说就是,让别人帮你解决烦恼去完成你想要达成的目的。

那代码上是怎么实现的呢?


实现?

首先创建一个Person类。 里面分别有五个属性,并且给设置setter和getter方法。代码如下:

public class Person {
     String name;
     int age;
     int sex;
     String address;
     int id;



    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 getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

然后,我们在其(Person类)里创建一个静态内部类。Builder
并且里面同样有和person一样的属性。仅提供setter方法。代码如下:

 //提供一个构造代理的方法
   public static class Builder{
       String name;
       int age=0;
       int id=0;
       int sex;
       String address;

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

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

        public Builder setId(int id){
            this.id=id;
            return this;
        }

        public Builder setSex(int sex){
            this.sex=sex;
            return this;
        }

        public Builder setAdress(String address){
            this.address=address;
            return this;
        }

   }

代码写完之后,我们在Person类里添加一个构造方法,让Builder和Person类绑定。

 public Person(Person.Builder builder){
        this.name=builder.name;
        this.age=builder.age;
        this.sex=builder.sex;
        this.address=builder.address;
        this.id=builder.id;
    }

最后在Builder类里,添加构造方法:

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

然后在MainActivity里面使用这个方法。

 Person builder=new Person.Builder()
                .setName("ss")
                .setAge(18)
                .setId(1)
                .setAdress("中国")
                .setSex(0)
                .build();

是不是很熟悉?和Okhttp的使用是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值