public class HtmlDocument { private String header = ""; private String body = ""; private String footer = ""; public void addHeader(String header) { this.header = header; } public void addBody(String body) { this.body = body; } public void addFooter(String footer) { this.footer = footer; } @Override public String toString() { return "" + header + "" + body + " " + footer + ""; } }
抽象创建者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public abstract class HtmlDocumentBuilder { protected HtmlDocument document;
public HtmlDocument getDocument() { return document; }
public void createNewHtmlDocument() { document = new HtmlDocument(); }
public abstract void buildHeader();
public abstract void buildBody();
public abstract void buildFooter(); }
具体创建者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class ArticleHtmlDocumentBuilder extends HtmlDocumentBuilder { @Override public void buildHeader() { document.addHeader("Article Header"); }
@Override public void buildBody() { document.addBody("Article Body"); }
@Override public void buildFooter() { document.addFooter("Article Footer"); } }
指挥者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public class HtmlDirector { private HtmlDocumentBuilder builder;
public HtmlDirector(HtmlDocumentBuilder builder) { this.builder = builder; }
public void constructDocument() { builder.createNewHtmlDocument(); builder.buildHeader(); builder.buildBody(); builder.buildFooter(); }
public HtmlDocument getDocument() { return builder.getDocument(); } }
创建对象:
1 2 3 4 5 6 7 8 9
public class Main { public static void main(String[] args) { HtmlDocumentBuilder articleBuilder = new ArticleHtmlDocumentBuilder(); HtmlDirector director = new HtmlDirector(articleBuilder); director.constructDocument(); HtmlDocument document = director.getDocument(); System.out.println("Constructed HTML Document: \n" + document); } }