最近工作中需要寫個小程序來填充郵件的內(nèi)容缘厢,由于郵件內(nèi)容需要支持表格等樣式,為了避免直接拼寫純 HTML 代碼甩挫,所以自己寫了個 HtmlWrapper.java
對拼接 HTML 的過程進行包裝贴硫。以便減少拼裝過程中的代碼冗余。于是便有了個分享 Builder 模式的想法伊者。
對于 構(gòu)建者模式 的使用場景英遭,以及優(yōu)缺點等說明,請參考 菜鳥教程|建造者模式 亦渗,這邊文章里面已經(jīng)說明的非常詳細和清楚了挖诸。
HtmlWrapper.java
的 Builder 實現(xiàn):
public class HtmlWrapper {
private String tag;
private String content;
private String attrsInTag;
// We don't want client side to initialize a `HtmlWrapper`, so we make the construct method as `private`
private HtmlWrapper(Builder builder) {
this.tag = builder.getTag();
this.content = builder.getContent();
this.attrsInTag = builder.getAttrsInTag();
}
// `Builder` is a common name in Builder Pattern, you can give a name what ever you want, but `Builder` is the best
public static class Builder {
private String tag;
private String content;
private String attrsInTag;
private String getTag() {
return tag;
}
public Builder setTag(String tag) {
this.tag = tag;
return this;
}
private String getContent() {
return content;
}
public Builder setContent(String content) {
this.content = content;
return this;
}
private String getAttrsInTag() {
return attrsInTag;
}
public Builder setAttrsInTag(String attrsInTag) {
this.attrsInTag = attrsInTag;
return this;
}
public HtmlWrapper build() {
return new HtmlWrapper(this);
}
}
}
下面是客戶端調(diào)用 HtmlWrapper.java
的代碼:
當(dāng)前這個版本僅僅是為了展示 構(gòu)建者模式 的實現(xiàn),所以并沒有其他邏輯法精。
public class Client {
public static void main(String[] args) {
HtmlWrapper table = new HtmlWrapper.Builder().setTag("table").setAttrsInTag("border='1' style='border-collapse:collapse'").build();
}
}