设计模式:建造者模式

含义:建造者模式,顾名思义,就是通过一系列的建造(set),最后建造(build)出我们想要的东西。

出现背景:编程过程中,当我们构造一个类,并为其属性进行赋值过程中,我们的做法是什么呢?构造方式注入,通过setter方式。这是我们通常使用的方式,但是,当一个类的属性很多,通过这两种方式进行注入将是很长的一串,且对于构造方式来说,每个字段的含义将变得不明确。

实例:

class Demo{
    private String name;
    private int age;
    private String property_1;
    private String property_n;
    ...//各个setter
}
Demo demo = new Demo();
demo.setName("csdn");
demo.setAge(18);
...

当我们面临几十个属性的bean时,将是一个很难受的赋值过程,换行、demo.**;将是之后所有属性赋值过程的操作流程。

接下来,我们的建造者就出现了。

class Demo{
    private String name;
    private int age;
    private String property_1;
    private String property_n;
    ...//各个setter
    /**
     * 建造者
     */
    public static class DemoBuilder{
        private Demo demo;
        public DemoBuilder(){
            demo = new Demo();
        }
        public DemoBuilder setName(String name){
            this.demo.setName(name);
            return this;
        }
        ...
        public Demo build(){
            return demo;
        }
    }
}

实际使用起来是这样的:

Demo demo = new Demo.DemoBuilder()
.setName("csdn")
.setAge("18")
.setProperty_1("")
....
.build();

以上就是我们的建造者简单使用。

学习过使用spring-security的同学可能会发现,在配置http过滤权限过程中有相似的使用,没错,spring-security中就有使用建造者的典型例子,不过他是使用and()进行的方法间的链接,实现原理很简单:

public HttpSecurity and(){
    return this;
}
以上就是建造者模式的简单应用,欢迎拍砖!
阅读更多
个人分类: 设计模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

设计模式:建造者模式

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭