博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式——构造模式
阅读量:7022 次
发布时间:2019-06-28

本文共 3174 字,大约阅读时间需要 10 分钟。

构造器模式_组装复杂实例(逐步构造出一个复杂的实例)

/** * 指挥者 * @author maikec * @date 2019/5/11 */public class Director {    private final AbstractBuilder builder;    public Director(AbstractBuilder builder){        this.builder = builder;    }    public void builderMessage(){        builder.createHead();        builder.createBody();        builder.signature();    }}/** * 抽象构造器 * @author maikec * @date 2019/5/11 */public abstract class AbstractBuilder {    protected Message message;    protected Head head;    protected Body body;    protected Author author;    /**     * 创建消息头部     * @return     */    protected abstract Head createHead();    /**     * 创建消息体     * @return     */    protected abstract Body createBody();    /**     * 署名     * @return     */    protected abstract Author signature();    public Message getMessage(){        return message;    }}/** * @author maikec * @date 2019/5/11 */public class Message {    private Head head;    private Body body;    private Author author;    public Message(){}    public Message(Head head,Body body,Author author){        this.head = head;        this.body = body;        this.author = author;    }    @Override    public String toString() {         super.toString();         if (head !=null || body != null || author != null){             StringBuffer sb = new StringBuffer( "[" );             if (head != null){                 sb.append( head.toString() );             }             if (body != null){                 sb.append( body.toString() );             }             if (author != null){                 sb.append( author.toString() );             }             sb.append( "]" );             return sb.toString();         }         return null;    }}/** * @author maikec * @date 2019/5/11 */public class Head {    private String name;    public Head(){}    public Head(String name){        this.name = name;    }    @Override    public String toString() {        super.toString();        return name == null ? "Head" : name;    }}/** * @author maikec * @date 2019/5/11 */public class Body {    private String name;    public Body(){}    public Body(String name) {        this.name = name;    }    @Override    public String toString() {         super.toString();         return name == null ? "Body" : name;    }}/** * @author maikec * @date 2019/5/11 */public class Author {    private String name;    public Author(){}    public Author(String name) {        this.name = name;    }    @Override    public String toString() {         super.toString();         return name == null ? "Author" : name;    }}/** * Email构造器 * @author maikec * @date 2019/5/11 */public class EmailBuilder extends AbstractBuilder {    @Override    protected Head createHead() {         head = new Head("Email Head");         return head;    }    @Override    protected Body createBody() {        body = new Body("Email Body");        return body;    }    @Override    protected Author signature() {        author =  new Author("maikec");        return author;    }    @Override    public Message getMessage() {        return new Message( head,body,author );    }}复制代码

附录

个人GitHub设计模式案例

声明

引用该文档请注明出处

转载于:https://juejin.im/post/5ce40d15e51d4556dc29357c

你可能感兴趣的文章
后仿真笔记 - ise 联合 modelsim
查看>>
python @property
查看>>
XCOJ 1168 (搜索+期望+高斯消元法)
查看>>
紫书 例题11-9 UVa 1658 (拆点+最小费用流)
查看>>
紫书 例题11-4 UVa247 (Floyd判断联通)
查看>>
防cc攻击利器之Httpgrard
查看>>
PCA MATLAB
查看>>
【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
查看>>
广告点击率预测 [离线部分]
查看>>
CodeForces 659F Polycarp and Hay
查看>>
Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
查看>>
http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/ 安卓studio 安装教程
查看>>
ES6(5) - 变量的解构赋值
查看>>
vc++6.0 模拟鼠标点击代码 木马程序的编写 VC 模拟键盘输入
查看>>
VC用法汇总
查看>>
ORACLE同义词使用
查看>>
无法将类型“XXX”隐式转换为“XXX[]”(Cannot implicitly convert type 'XXX' to 'XXX[]')
查看>>
react-navigation
查看>>
pat 1014 1017 排队类问题
查看>>
设计循环队列
查看>>