構建者模式-Builder
阿新 • • 發佈:2018-05-08
接口 lose builder str 參數 his 控制 它的 tostring
構建者模式-Builder
Builder模式是一步一步創建一個復雜對象的創建型模式,它允許用戶在不知道內部構建細節的情況下,可以更精細地控制對象的構造流程。該模式是為了將構建復雜對象的過程和它的部件解耦,使得構建過程和部件的表示隔離開來
Builder接口
定義了構建者的方法.
public interface Builder { void makeTitle(String title); void makeString(String str); void makeItems(String[] items); void close(); }
TextBuilder類
這是Builder接口的一個具體實現, 用於根據輸入構建出類似Markdown風格的內容
public class TextBuilder implements Builder { private StringBuffer out = new StringBuffer(); @Override public void makeTitle(String title) { out.append("==============================\n"); out.append("『 " + title + " 』\n"); out.append("\n"); } @Override public void makeString(String str) { out.append("■ " + str + "\n"); out.append("\n"); } @Override public void makeItems(String[] items) { for (int i = 0; i < items.length; i++) { out.append(" ?" + items[i] + "\n"); } out.append("\n"); } @Override public void close() { out.append("==============================\n"); } public String getResult() { return out.toString(); } }
Director類
這是一個指揮官, 利用Builder來進行組裝內容
public class Director { private Builder builder; public Director(Builder builder) { // 因為接收的參數是Builder類的子類 this.builder = builder; // 所以可以將其保存在builder字段中 } public void construct() { // 編寫文檔 builder.makeTitle("Greeting"); // 標題 builder.makeString("從早上至下午"); // 字符串 builder.makeItems(new String[]{ // 條目 "早上好。", "下午好。", }); builder.makeString("晚上"); // 其他字符串 builder.makeItems(new String[]{ // 其他條目 "晚上好。", "晚安。", "再見。", }); builder.close(); // 完成文檔 } }
Main
本類用於運行測試
public class Main { public static void main(String[] args) { // 構建者 TextBuilder textbuilder = new TextBuilder(); // 指揮者 Director director = new Director(textbuilder); // 構建 director.construct(); // 構建好的內容 System.out.println(textbuilder.getResult()); } }
構建者模式-Builder