设计模式-建造者模式

建造者模式

产品角色(用文章做例子)

package com.black.builder;

public class Article {

    private String title;

    private String author;

    private String content;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }



}

抽象建造者角色

package com.black.builder;

public abstract class Builder {

    public abstract void buildTitle(String title);

    public abstract void buildAuthor(String author);

    public abstract void buildContent(String content);

    public abstract Article retrieveResult();

}

具体建造者角色

package com.black.builder;

public class ArticleBuilder extends Builder {

    private Article article = new Article();


    @Override
    public Article retrieveResult() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void buildAuthor(String author) {
        // TODO Auto-generated method stub

    }

    @Override
    public void buildContent(String content) {
        // TODO Auto-generated method stub

    }

    @Override
    public void buildTitle(String title) {
        // TODO Auto-generated method stub

    }

}

导演者角色

package com.black.builder;

import java.util.Map;

public class Director {

    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public void construct(Map map) {
        this.builder.buildTitle((String)map.get("title"));
        this.builder.buildAuthor((String)map.get("author"));
        this.builder.buildContent((String)map.get("content"));

    }

}

各角色分析

  • 抽象建造者角色:一般是一个接口或者抽象类,定义了产品的各个零件的建造方法,该产品有多少零部件就有几个对应的方法;最后还要提供一个返回建造好的产品的方法;如果只有一个具体建造者可以省略;
  • 具体建造者角色:建造的具体执行者,被客户端依赖;
  • 导演者角色:根据各零部件参数,指导建造者建造产品;
  • 产品角色:被建造的对象;

产品角色不一定非要是一种产品,可以是没有任何关联的两种或者多种产品,只需要让他们实现一个标识符接口;碰到零部件不同的可以进行缺省;根据实际情况,各个角色可以互相合并;

应用场景

  • 当产品内部有负责的组件,该组件有可能是对象,也可能是属性;
  • 当产品的组建对象之间有互相依赖,通过建造者模式可以理清依赖分布建造;

建造者模式可以是产品的内部构造清晰化,对客户端隐藏了复杂的产品时间生成,让客户端更加专注于业务的实现;各个builder之间相互独立,没有耦合;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值