美文网首页
构建模式Builder

构建模式Builder

作者: 陈陈_04d0 | 来源:发表于2020-12-01 15:47 被阅读0次

优点:易扩展,使用方便灵活配置参数。例如AlertDialog、Retrofit ...

缺点:内部变化复杂,会有很多的建造类。

Person person =new Person.PersonBuilder()

.buildAge(10)

.buildLike("watch TV")

.buildName("CC")

.build();

/**

* Builder 构建模式

*/

public class Person {

private Stringname;

    private Stringlike;

    private int age;

    private Stringkind;

    private Person(String name, String like, int age, String kind) {

this.name = name;

        this.like = like;

        this.age = age;

        this.kind = kind;

    }

public Person(PersonBuilder builder) {

this.name = builder.name;

        this.like = builder.like;

        this.age = builder.age;

        this.kind = builder.kind;

    }

public Person() {

}

protected void setName(String name) {

this.name = name;

    }

protected void setLike(String like) {

this.like = like;

    }

protected void setAge(int age) {

this.age = age;

    }

protected void setKind(String kind) {

this.kind = kind;

    }

static class PersonBuilder {

private Stringname;

        private Stringlike;

        private int age;

        private Stringkind;

        PersonBuilder() {

}

public PersonBuilderBuilder(String name) {

this.name = name;

return this;

        }

public PersonBuilderBuilder(int age) {

this.age = age;

return this;

        }

PersonBuilderbuildName(String name) {

this.name = name;

return this;

        }

PersonBuilderbuildAge(int age) {

this.age = age;

return this;

        }

PersonBuilderbuildLike(String like) {

this.like = like;

return this;

        }

PersonBuilderbuildKind(String kind) {

this.kind = kind;

return this;

        }

Personbuild() {

//        Person person = new ManPerson();

//        person.setAge(age);

            return new Person(this);

        }

}

@NonNull

@Override

    public StringtoString() {

return "Person:" +kind +" NAME = " +name +" LIKE =" +like +" AGE = " +age;

    }

}

相关文章

网友评论

      本文标题:构建模式Builder

      本文链接:https://www.haomeiwen.com/subject/nsyswktx.html