构造型模式之Builder(生成器)模式

1.如果你期望在构造对象之前逐步收集该对象与构造相关的信息,可使用Builder(生成器)模式
2.举例

//Person.Builder嵌套类,自定义类型加载参数对象Person.Age
public class Person {
    private final int id;
    private final String name;
    private final int age;
    public Person(Builder builder) {
        // TODO Auto-generated constructor stub
        this.id = builder.id;
        this.name = builder.name;
        this.age = builder.age.getAge();
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }

    public static class Builder{
        private int id;
        private String name;
        private Age age;

        public Builder setId(int id) {
            this.id = id;
            return this;
        }
        public Builder setName(String name) {
            this.name = name;
            return this;
        }
        public Builder setAge(Age age) {
            this.age = age;
            return this;
        }

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

    public static class Age {
        private int age;

        public Age setAge(int age) {
            this.age = age;
            return this;
        }
        public int getAge(){
            return age;
        }
    }
}
//测试类
public class Test {
    public static void main(String[] args){
        Person.Age a = new Person.Age().setAge(10);
        Person p = new Person.Builder().setId(1).setName("lin").setAge(a).build();
        System.out.println(p.getId());
        System.out.println(p.getName());
        System.out.println(p.getAge());
    }   
}
//结果
1
lin
10

3.总结:Builder(生成器)模式的意图是把构造对象实例的代码逻辑一道要实例化的类的外部(即Person.Builder与Person.Age可移出Person类)。Builder(生成器)模式将一个复杂对象的构造逻辑从其代码中分离出来。其直接的效果就是简化了原来复杂的目标对象。另外,该模式还使得我们可以逐步构造目标类对象。
4.参考:http://www.importnew.com/6605.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值