云主机如何上传网站,泛解析对网站的影响,o2o交易平台有哪些,足球比赛直播平台Builder模式又叫建造模式#xff0c;是用于组装具有复杂结构的实例的模式。 示例程序是编写一个文档#xff0c;并且写入到文件中#xff0c;该文档具有以下结构#xff0c;含有标题#xff0c;字符串#xff0c;一些条目。 Builder抽象类#xff0c;为建造模式的核心pa… Builder模式又叫建造模式是用于组装具有复杂结构的实例的模式。 示例程序是编写一个文档并且写入到文件中该文档具有以下结构含有标题字符串一些条目。 Builder抽象类为建造模式的核心package site.wangxin520.gof.builder;/*** 建造者模式的核心——建造者* 负责定义用于生成实例的API接口* author wangXgnaw* 在本类中定义了四个方法分别是标题字符串和条目最后的close()方法则用于生成文件以及关闭相应的流*/
public abstract class Builder {/*** 抽象方法传入字符串标题用于生成文件的字符串* param title*/public abstract void makeTitle(String title);/*** 抽象方法传入字符串* param string*/public abstract void makeString(String string);/*** 抽象方法用于传入一个字符串数组生成文件中对应的条目* param items*/public abstract void makeItems(String[] items);/*** 抽象方法关闭相应的流*/public abstract void close();} Director 监工类调用builder的方法package site.wangxin520.gof.builder;/*** 管理者监工* 负责使用builder角色的接口来生成实例它并不依赖于具体实现类而是面对抽象类/父类或者接口进行操作* author wangXgnaw* 在本类汇总有一个Builder的属性。* 采用的是多态的方法父类接口指向子类对象*/
public class Director {private Builder builder;/*** 构造器传入Builder属性的具体实现* param builder*/public Director(Builder builder){this.builderbuilder;}/*** 生成文档的方法*/public void construct(){builder.makeTitle(标题大家好);builder.makeString(从早上到下午);builder.makeItems(new String[]{早安,午安,});builder.makeString(晚上);builder.makeItems(new String[]{晚安,拜拜,});builder.close();}} HtmlBuilder 继承了Builder类实现了相应的方法package site.wangxin520.gof.builder;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;/*** 生成HTML文件的建造模式对Builder抽象类的具体实现* author wangXgnaw**/
public class HtmlBuilder extends Builder{private StringBuilder sbnew StringBuilder();Overridepublic void makeTitle(String title) {sb.append(html).append(headtitle).append(title).append(/title/headbody);}Overridepublic void makeString(String string) {sb.append(p).append(string).append(/p);}Overridepublic void makeItems(String[] items) {sb.append(ul);for (String string : items) {sb.append(li).append(string).append(/li);}sb.append(/ul);}Overridepublic void close() {sb.append(/body/html);FileWriter fwnull;try {fwnew FileWriter(new File(E:/TextBuilder.html));fw.write(sb.toString());} catch (IOException e) {e.printStackTrace();} finally {if(fw!null){try {fw.close();} catch (IOException e) {e.printStackTrace();}}}}} TextBuilder同上package site.wangxin520.gof.builder;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;/*** 生成txt文件的建造模式对Builder抽象类的具体实现* * author wangXgnaw**/
public class TextBuilder extends Builder {private StringBuilder sb new StringBuilder();Overridepublic void makeTitle(String title) {sb.append().append(\r\n);sb.append(【 title 】).append(\r\n);sb.append().append(\r\n).append(\r\n);}Overridepublic void makeString(String string) {sb.append(【.】 string).append(\r\n).append(\r\n);}Overridepublic void makeItems(String[] items) {for (String string : items) {sb.append(\t string).append(\r\n);}sb.append(\r\n);}Overridepublic void close() {sb.append();FileWriter fw null;try {fw new FileWriter(new File(E:/TextBuilder.txt));fw.write(sb.toString());} catch (IOException e) {e.printStackTrace();} finally {if (fw ! null) {try {fw.close();} catch (IOException e) {e.printStackTrace();}}}}} Main测试类package site.wangxin520.gof.builder;/*** 建造者模式的测试类* author wangXgnaw**/
public class Main {public static void main(String[] args) {//先构建一个Builder采用的是TextBuilder的实现类Builder b1new TextBuilder();//将Builder实例传入到Director中Director director1new Director(b1);//调用构造方法生成文档director1.construct();//与上同Builder b2new HtmlBuilder();Director director2new Director(b2);director2.construct();}} 测试结果没有报错并且成功的在E盘中写入俩文件 TextBuilder.txt TextBuilder.html(这里忘记改名字了) 转载于:https://www.cnblogs.com/wangxinblog/p/7639504.html