博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
七、Builder 建造器模式
阅读量:6910 次
发布时间:2019-06-27

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

需求:需要组装复杂结构的实例

代码清单:

Builder 接口:

1 public abstract class Builder {2 3     public abstract  void makeTitle(String title);4     public abstract  void makeString(String str);5     public abstract  void makeItems(String[] itens);6     public abstract  void close();7 }

实现1:

public class HtmlBuilder extends Builder{    private String filename;    private PrintWriter writer;    @Override    public void makeTitle(String title) {        filename= title+".html";        try{            writer = new PrintWriter(new FileWriter(filename));        }catch (IOException E){            E.printStackTrace();        }        writer.println(""+title+"");        writer.println("

"+title+"

"); } @Override public void makeString(String str) { writer.println("

"+str+"

"); } @Override public void makeItems(String[] itens) { writer.println("ul"); for(int i=0;i
"); } writer.println(""); } @Override public void close() { writer.println(""); writer.close(); } public String getResult(){ return filename; }}

实现2:

public class TextBuilder extends Builder{    private StringBuffer buffer = new StringBuffer();    @Override    public void makeTitle(String title) {        buffer.append("===============================\n");        buffer.append("["+title+"]");        buffer.append("\n");    }    @Override    public void makeString(String str) {        buffer.append("|"+str+"|");        buffer.append("\n");    }    @Override    public void makeItems(String[] itens) {        for(int i=0;i

指挥者:

public class Director {    private Builder builder;    public Director(Builder builder){        this.builder = builder;    }    public void construct(){        builder.makeTitle("Greeting");        builder.makeString("上午-下午");        builder.makeItems(new String[]{                "good morning",                "good night"        });        builder.makeString("晚上");        builder.makeItems(new String[]{                "good night",                "bye"        });        builder.close();    }}

测试:

public class Main {    public static void main(String[] args){            TextBuilder textBuilder = new TextBuilder();            Director director = new Director(textBuilder);            director.construct();            String result = textBuilder.getResult();            System.out.println(result);            HtmlBuilder htmlBuilder = new HtmlBuilder();            Director director2 = new Director(htmlBuilder);            director2.construct();            String fileName = htmlBuilder.getResult();            System.out.println(fileName+"complete");            System.exit(0);    }}

 

转载于:https://www.cnblogs.com/baizhuang/p/10443349.html

你可能感兴趣的文章
HTML互动视频教程
查看>>
深入浅出Future Pattern
查看>>
微信公众平台企业号回调模式的URL验证
查看>>
平台常用函数介绍
查看>>
公司讲座
查看>>
惆怅,诸事不顺
查看>>
Lambda架构与推荐在电商网站实践
查看>>
Docker Swarm与Apache Mesos的区别
查看>>
消息中间件保证消息一致性解决方案
查看>>
java内嵌浏览器DJNativeSwing
查看>>
Php学习
查看>>
寓意很深刻的故事
查看>>
Confluence 6 权限概述
查看>>
Android小白的探索:2D绘图之Android简易版Microsoft Visio学习之路 三、装饰者模式...
查看>>
现代操作系统--引论
查看>>
Unix Study之--AIX安装和配置SSH
查看>>
C++ priority_queue用法(大顶堆,小顶堆)
查看>>
带返回值的python多级菜单
查看>>
Linux中~/.是什么意思
查看>>
MySql-Binlog协议详解-流程篇
查看>>