标签:make 创建 interface 解耦 定义 markdown === 复杂 ++
Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来
定义了构建者的方法.
public interface Builder { void makeTitle(String title); void makeString(String str); void makeItems(String[] items); void close(); }
这是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(); } }
这是一个指挥官, 利用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(); // 完成文档 } }
本类用于运行测试
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()); } }
标签:make 创建 interface 解耦 定义 markdown === 复杂 ++
原文地址:https://www.cnblogs.com/noKing/p/9009827.html