首页 > 其他 > 详细

设计模式学习之构建者模式

时间:2015-03-27 12:53:55      阅读:126      评论:0      收藏:0      [点我收藏+]

构建者(builder)模式,也属于创建型设计模式。将复杂对象的构建算法与表示分离,使得同样的构建过程可以创建不同的表示,是抽象工厂模式与模板模式的结合。我们还以汽车为例,设想一下这样的场景,老板要根据很多不同的产品族(车轮、方向盘、空调等部件)组装成各种不同类型的汽车。我们将所有的部件都分别抽象一个接口,如果使用抽象工厂模式,排列组合,将会是一个浩大的工程。构建者模式将架构与表示分离,将非常适合这样的场景。

我看过一些中间件中使用了构建者模式,发现自己的理解跟网上很多人的理解不同。例如,为了展示理解的不同,下面结合我的理解重写建房的例子:


public class House {

    private final String window;

    private final String floor;

    public String getWindow() {

        return window;

    }

    public String getFloor() {

        return floor;

    }

 

    public static class Builder {

        private String window = “”;//默认值

        private String floor = "";//默认值

        public Builder setWindow(String window) {

            this.window = window;

            return this;

        }

        public Builder setFloor(String floor) {

            this.floor = floor;

            return this;

        }

        public House builder() {

            return new House(this);

        }

    }


    private House(Builder builder) {

        window = builder.window;

        floor = builder.floor;

    }

}


个人理解:构建者模式最重要的是,被构建类的构造方法不能被除了Builder类之外的其他类访问到(单例模式也是这样),并且在Builder类中能临时存储构造需要的数据,以达到构建与表示的分离。有没有director角色其实没有那么重要,不要拘泥于设计模式,关于不要拘泥于设计模式,之后还会提到。



设计模式学习之构建者模式

原文:http://blog.csdn.net/wodeyuer125/article/details/44673449

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!