【小威哥の设计模式系列-2】建造者模式

678 阅读2分钟

1:概述

建造者模式是一种设计十分简单,通俗易懂,但是真的超级超级实用的一种设计模式,几乎我们熟知的框架啊工具啊很多很多都使用了建造者模式去init实例啊什么的,小威哥希望大家都能够学起来并且大量运用在实际开发中!



2:建造者模式的使用场景

2.1:不使用建造者模式的典型案例

很多时候,我们设计了一个非常多成员变量的bean,这些成员变量初始化又有许多不同的构造组合,如下:

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

    public Person(String name, String company) {
        this.name = name;
        this.company = company;
    }
    //以及一大堆构造函数......
}

如果变量再多一点,组合关系再多一点,那么是不是写起来又麻烦又难看。

2.2:使用建造者模式

那么,我们就用建造者模式来改造一下

public class Person {
    private String name;
    private int age;
    private String company;

    public Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.company = builder.company;
    }
    //这里可以使用内部类,也可以另外弄一个类
    public static class Builder {
        private String name;
        private int age;
        private String company;

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

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

        public Builder setCompany(String company) {
            this.company = company;
            return this;
        }

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

然后我们就可以这么init这个bean了

        Person.Builder builder = new Person.Builder();
        Person person = builder.setName("test").setAge(5).build();

怎么样,是不是感觉似曾相识,又无比实用且酷炫。



3:总结

总的来说,不像java里面很多的过度设计的一堆又臭又重又难理解的设计模式,建造者模式真的非常轻巧灵活又实用,如果能合理使用,可以让你的代码又骚气又美观。

如果你觉得我写的不错,简单易懂的话!请给小威哥一个赞👍!