首页 > 其他 > 详细

建造者模式

时间:2020-01-15 20:38:27      阅读:67      评论:0      收藏:0      [点我收藏+]

建造者模式和工厂模式的不同在于,工厂模式产生的对象都是模板化的,没有特性。建造者意在让用户创建个性特点的对象。java与模式一书中有个例子特别生动。女娲造人,但是人有四肢,头颅,身体等部件。女娲自己造任务太多,且达不到个性化。于是女娲将造人拆分为多个任务,分别交给不同的神。有的神专门做头颅,有的神专门做四肢。下面代码是精简版本。在Builder类中,创建一个Person对象,但是这个Person没有任何的属性。我们通过调用Builder对象的各个方法,来完善人的四肢,头颅。我们不传Head,那这个人就没有头。

技术分享图片
package builder_k;/*
* @auther 顶风少年 
* @mail dfsn19970313@foxmail.com
* @date 2020-01-15 19:56
* @notify 
* @version 1.0
*/
public class Person {

    private Head head;
    private Body body;
    private Limb limb;

    public Head getHead() {
        return head;
    }

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

    public Body getBody() {
        return body;
    }

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

    public Limb getLimb() {
        return limb;
    }

    public void setLimb(Limb limb) {
        this.limb = limb;
    }
}
View Code
技术分享图片
package builder_k;/*
* @auther 顶风少年 
* @mail dfsn19970313@foxmail.com
* @date 2020-01-15 20:00
* @notify 
* @version 1.0
*/
public class Head {
}
View Code
技术分享图片
package builder_k;/*
* @auther 顶风少年 
* @mail dfsn19970313@foxmail.com
* @date 2020-01-15 20:00
* @notify 
* @version 1.0
*/
public class Body {
}
View Code
技术分享图片
package builder_k;/*
* @auther 顶风少年 
* @mail dfsn19970313@foxmail.com
* @date 2020-01-15 20:01
* @notify 
* @version 1.0
*/
public class Limb {
}
View Code
技术分享图片
package builder_k;/*
 * @auther 顶风少年
 * @mail dfsn19970313@foxmail.com
 * @date 2020-01-15 19:56
 * @notify
 * @version 1.0
 */

public class Builder {
    private Person person = new Person();

    public Builder setHead(Head head) {
        person.setHead(head);
        return this;
    }

    public Builder setBody(Body body) {
        person.setBody(body);
        return this;
    }

    public Builder setLimb(Limb limb) {
        person.setLimb(limb);
        return this;
    }

    public Person build() {
        return person;
    }
}
View Code
技术分享图片
package builder_k;/*
* @auther 顶风少年 
* @mail dfsn19970313@foxmail.com
* @date 2020-01-15 20:03
* @notify 
* @version 1.0
*/
public class Main {
    public static void main(String[] args) {
        Builder builder = new Builder();
        builder.setBody(new Body());
        builder.setHead(new Head());
        builder.setLimb(new Limb());
    }
}
View Code

技术分享图片

建造者模式

原文:https://www.cnblogs.com/zumengjie/p/12198583.html

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