美文网首页设计模式
设计模式之建造者模式

设计模式之建造者模式

作者: Catch6 | 来源:发表于2022-01-25 10:34 被阅读0次

使用场景

  • 对象的构建有很多必填参数,如果使用构造函数会导致参数列表过长难以使用
  • 构造参数之间有依赖关系,比如设置了minAge就必须设置maxAge,且minAge小于等于maxAge
  • 类的属性一旦被创建就不可变(不暴力set()方法)

类图

image.png

Person类包含了一个内部类Builder,负责对外暴露设置属性的方法,这些方法可以包含校验和初始化规则,属性之前的依赖规则可以放到最终调用的build()方法中校验

代码实现

public class Person {

    private Long id;
    private String name;
    private Integer minAge;
    private Integer maxAge;

    private Person() {
    }

    public static class Builder {

        private Person person = new Person();

        public Builder id(Long id) {
            person.id = id;
            return this;
        }

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

        public Builder minAge(Integer minAge) {
            person.minAge = minAge;
            return this;
        }

        public Builder maxAge(Integer maxAge) {
            person.maxAge = maxAge;
            return this;
        }

        public Person build() {
            if (person.minAge != null && person.maxAge != null) {
                if (person.minAge < 0) {
                    throw new IllegalArgumentException("minAge必须大于等于0");
                }
                if (person.maxAge <= person.minAge) {
                    throw new IllegalArgumentException("maxAge必须大于等于minAge");
                }
            } else if ((person.minAge == null && person.maxAge != null) ||
                    (person.minAge != null && person.maxAge == null)) {
                throw new IllegalArgumentException("minAge和maxAge必须同时设置");
            }
            return person;
        }

    }

}

与工厂模式有何区别?

  • 工厂模式是用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。
  • 建造者模式是用来创建一种类型的复杂对象,通过设置不同的可选参数,“定制化”地创建不同的对象。

相关文章

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

网友评论

    本文标题:设计模式之建造者模式

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