美文网首页
Builder模式

Builder模式

作者: 耳_总 | 来源:发表于2017-07-21 22:30 被阅读1次

Builder模式是一步一步构建一个复杂对象的创建型模式,他允许用户在不知道构建细节的情况下,可以更加精细的控制构建流程。该模式是是为了将构件细节和它的部件解耦,使得构建过程和部件分离开来。构建过程和部件可以进行扩展。

  • 使用场景
    1、相同的方法执行不同的顺序。
    2、多个部件都可以组装到对象中,但是产生的结果又不相同时。
    3、当初始化一个对象需要许多参数,并且这些参数都有默认值时。

举个栗子:
假设我们创建一个人,一个人需要body、head、hand、foot这些必要的属性,还可能需要一些装饰的属性如:衣服(clothes)、鞋子(shoe)、帽子(cap)等等,然后我们开始动手了,这些属性在我们构造一个对象的时候要么通过构造函数传递,要么通过set方法:

public class Man {
    private String head;
    private String body;
    private String hand;
    private String foot;
    private String clothes;
    private String shoe;
    private String cap;

    public Man(String head) {
        this.head = head;
    }

    public Man(String head, String body) {
        this.head = head;
        this.body = body;
    }

    public Man(String head, String body, String hand) {
        this.head = head;
        this.body = body;
        this.hand = hand;
    }

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getHand() {
        return hand;
    }

    public void setHand(String hand) {
        this.hand = hand;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }
}

在我们使用的时候:

public class MyClass {

    public MyClass() {
    }

    public static void main(String[] strs) {
        Man man = new Man("头", "脚");
        man.setHand("手");
        man.setCap("帽子");
        ...
    }

}

可以看到构造方法有非常多个,而且通过还要通过setxxx方式去设置属性,使用起来非常麻烦而且容易出错,在这种情况下,builder模式就能很好解决问题:

public class Man {
    private String head;
    private String body;
    private String hand;
    private String foot;
    private String clothes;
    private String shoe;
    private String cap;

    public Man(Builder builder) {
        this.head = builder.head;
        this.body = builder.body;
        this.hand = builder.hand;
        this.foot = builder.foot;
        this.clothes = builder.clothes;
        this.shoe = builder.shoe;
        this.cap = builder.cap;
    }



    public class Builder {
        private String head;
        private String body;
        private String hand;
        private String foot;
        private String clothes;
        private String shoe;
        private String cap;

        public Builder(){

        }

        public Builder setHead(String head) {
            this.head = head;
            return this;
        }

        public Builder setBody(String body) {
            this.body = body;
            return this;
        }

        public Builder setHand(String hand) {
            this.hand = hand;
            return this;
        }

        public Builder setFoot(String foot) {
            this.foot = foot;
            return this;
        }

        public Builder setClothes(String clothes) {
            this.clothes = clothes;
            return this;
        }

        public Builder setShoe(String shoe) {
            this.shoe = shoe;
            return this;
        }

        public Builder setCap(String cap) {
            this.cap = cap;
            return this;
        }

        public Man build() {
            return  new Man(this);
        }
    }
}
public static void main(String[] strs) {
       new Man.Builder()
               .setCap("帽子")
               .setHead("头")
               .setBody("身体")
               .build();
               
    }

这样子用链式调用的模式来构造对象非常清晰明了。

相关文章

  • 设计模式:Builder

    Builder模式基本介绍Builder模式的实现源码中的Builder模式记录 Builder模式基本介绍 Bu...

  • Builder模式

    个人博客http://www.milovetingting.cn Builder模式 模式介绍 Builder模式...

  • Android中的构建者(Builder)模式

    目录一、场景分析二、定义三、Builder模式变种-链式调用四、经典Builder模式五、用到Builder模式的...

  • Builder模式

    Builder模式?(好熟悉,貌似有说不上来),在这里好好总结一下。 Builder模式的介绍 Builder模式...

  • 设计模式之构建者模式

    Builder属于创建型设计模式 Builder定义: Separate the construction of ...

  • 建造者模式

    建造者模式 创建型模式 Director、Builder、Product建造模型 Builder负责构建Produ...

  • Builder模式及原型模式

    本文主要内容 Builder模式定义 Builder模式 原型模式定义 原型模式 本文介绍两种简单的设计模式,Bu...

  • 11.2设计模式-构建者模式-详解

    构建者模式 java的builder模式详解 builder模式在android中的实际运用 1.java的bui...

  • 第 7 章 Builder 模式 -- 组装复杂的实例

    Builder 模式 概念:组装具有复杂结构的实例可以称为 Builder 模式。 Show me the cod...

  • 设计模式--Builder

    标签(空格分隔): android 设计模式 builder 1 Builder设计模式概述 将复杂对象的构建与它...

网友评论

      本文标题:Builder模式

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