建造者模式

什么是建造者模式

建造者模式是完成一个复杂的对象的创建,将创建的工作交给建造者来完成,对外开发者只需要去关心对象创建所需要的属性构建即可。

建造者模式通常包括下面几个角色:
1、Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。
2、ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。
3、Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。
4、Product:要创建的复杂对象。

使用场景:
1、需要生成的对象具有复杂的内部结构。
2、需要生成的对象内部属性本身相互依赖。
实际使用:
jdk中的StringBuilder和StringBuffer,zk的客户端Curator以及mybatis中的ParameterMapping等都用到了建造者模式。

与工厂模式的区别是:建造者模式更加关注与零件装配的顺序,而工厂模式则关注对象的创建的整体。

实现

实体类
public class Person {

    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
建造者抽象
public interface PsersonBuilder {

    Person bulid();
}

建造者
public class ManBuilder implements PsersonBuilder {

    //将所需要创建的对象的所有属性包含到建造器中
    private String name;
    private int age;

    //返回建造器本身
    public ManBuilder setName(String name) {
        this.name = name;
        return this;
    }

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

    @Override
    public Person bulid() {
        return new Person(name, age);
    }
}
测试
public class Test {

    public static void main(String[] args) {
        Person person = new ManBuilder()
                .setAge(2)
                .setName("s")
                .bulid();
        System.out.println(person);
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值