Builder设计模式

Builder设计模式将复杂对象的构建与表示分离,允许创建不同表示。通过静态内部类和链式调用设置对象属性,提高代码可读性和可维护性。在Java中,使用Builder可以避免直接构造函数的参数过多问题,但可能增加内存消耗。总结来说,Builder模式具有构造灵活性、代码清晰等优点,但也可能存在维护复杂度和内存消耗的缺点。
摘要由CSDN通过智能技术生成

模式定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

使用

  1. 静态内部类使用链式调用的方式来设置类的表现形式
  2. 私有外部类的构造方法,通过静态内部来获取参数进行表现

代码实现


public class Person  {
    private int ID;
    private int age;
    private String name;
    private int hight;
    private int weight;
    private Callback callback;

    interface Callback {
        void callback();
    }

    private Person(Builder builder) {
        this.ID = builder.ID;
        this.age = builder.age;
        this.name = builder.name;
        this.hight = builder.hight;
        this.weight = builder.weight;
        this.callback = builder.callback;
    }

    public static class Builder {
        private int ID;
        private int age;
        private String name;
        private int hight;
        private int weight;
        private Callback callback;

        public Builder setID(int ID) {
            this.ID = ID;
            return this;
        }

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

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

        public Builder setHight(int hight) {
            this.hight = hight;
            return this;
        }

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

        public Builder setCallback(Callback callback) {
            this.callback = callback;
            return this;
        }

        public Person build() {
            return new Person(this);
        }
    }
}
Person.Builder buider = new Person.Builder();
buider.setAge(13);
buider.setName("jack");
Person jack = buider.build();

总结

优点:我可以不必知道你的内部构造是怎样的,我可以直接使用Builder建造自己需要的客户端;代码清晰,易维护,易扩展;将构造和表示分离,降低耦合

缺点:代码也可能不清晰,不易维护(怎么说:比如你的客户端实现了很多接口,当你每当修改接口的时候,每次都要对应修改你的客户端);使用不恰当消耗内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值