建造者模式(Builder)

让人想犯罪 __ 提交于 2020-01-07 01:45:40

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

模仿lombok,照猫画虎,实现自己的建造者模式

  • 使用静态内部类实现
package com.depen.builder;

import javafx.util.Builder;

/**
 * @Description:模仿lombok建造这模式
 * @Author :YanDepeng
 * @Date :Created in 2020/1/6 20:20
 * @Version :
 */
public class Man {
    private int age;
    private String name;
    private String sex;

    public static Man_Builder builder() {
        return new Man_Builder();
    }

    private Man(int age, String name, String sex) {
        this.age = age;
        this.name = name;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Man{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }

    public static class Man_Builder {
        private int age;
        private String name;
        private String sex;

        public Man_Builder() {
        }

        public Man_Builder age(int age) {
            this.age = age;
            return this;
        }
        public Man_Builder name(String name) {
            this.name = name;
            return this;
        }
        public Man_Builder sex(String sex) {
            this.sex = sex;
            return this;
        }

        /**
         * 相当于解冻方法,调用该方法后,才会生成Man对象
         * 较JavaBean模式,用set方法为属性赋值
         * 构造步骤都集中到了此方法中进行
         * 可以在此方法中添加对Man构造参数的校验
         *
         * @return
         */
        public Man myBuild() {
            return new Man(this.age, this.name, this.sex);
        }
    }
}

测试

public class Main {
    public static void main(String[] args) {
        Man man = Man.builder().age(2).sex("男").name("tom").myBuild();
        System.out.println(man.toString());
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!