设计模式系列之建造者模式构建实体类

编程入门 行业动态 更新时间:2024-10-24 02:29:46

设计模式系列之建造者模式(Build Pattern)构建实体类

模式定义

建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法。

所谓建造者模式就是**将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象。**所以建造者模式又叫生成器模式。
建造者模式类图

模式结构

建造者模式包含如下角色
Builder:抽象建造者
ConcreteBuilder:具体建造者
Director:指挥者
Product:产品角色

如果系统只需要一个具体的建造者类的时候,可以省略抽象建造者,有时候指挥者类也可以省略,让建造者类同时充当指挥者和建造者

例子实践

package .extra.licenseLog.model;import java.util.Date;/*** <pre>*     证照操作记录* </pre>** <pre>* @author mazq* 修改记录*    修改后版本:     修改人:  修改日期: 2020/08/15 10:21  修改内容:* </pre>*/
public class LicenseLogModel {/*** 日志SEQ*/private String seq;/*** 痕迹表SEQ*/private String handleSeq;/*** 查验证照用户账号*/private String userCode;/*** 查验证照编码*/private String certCode;/*** 查验证照时间*/private Date certTime;/*** 办件流水号*/private String controlSeq;;public LicenseLogModel() {}public LicenseLogModel(String seq) {this.seq = seq;}public LicenseLogModel(String seq, String handleSeq, String userCode, String certCode, Date certTime, String controlSeq) {this.seq = seq;this.handleSeq = handleSeq;this.userCode = userCode;this.certCode = certCode;this.certTime = certTime;this.controlSeq = controlSeq;}private LicenseLogModel(Builder builder){this.seq = builder.seq;this.handleSeq = builder.handleSeq;this.userCode = builder.userCode;this.certCode = builder.certCode;this.certTime = builder.certTime;this.controlSeq = builder.controlSeq;}public String getSeq() {return seq;}public void setSeq(String seq) {this.seq = seq;}public String getHandleSeq() {return handleSeq;}public void setHandleSeq(String handleSeq) {this.handleSeq = handleSeq;}public String getUserCode() {return userCode;}public void setUserCode(String userCode) {this.userCode = userCode;}public Date getCertTime() {return certTime;}public void setCertTime(Date certTime) {this.certTime = certTime;}public String getCertCode() {return certCode;}public void setCertCode(String certCode) {this.certCode = certCode;}public String getControlSeq() {return controlSeq;}public void setControlSeq(String controlSeq) {this.controlSeq = controlSeq;}public static class Builder {private String seq;private String handleSeq;private String userCode;private String certCode;private Date certTime;private String controlSeq;public Builder(String seq){this.seq = seq;}public Builder setSeq(String seq) {this.seq = seq;return this;}public Builder setHandleSeq(String handleSeq) {this.handleSeq = handleSeq;return this;}public Builder setUserCode(String userCode) {this.userCode = userCode;return this;}public Builder setCertCode(String certCode){this.certCode = certCode;return this;}public Builder setCertTime(Date certTime) {this.certTime = certTime;return this;}public Builder setControlSeq(String controlSeq){this.controlSeq = controlSeq;return this;}public LicenseLogModel build(){return new LicenseLogModel(this);}}@Overridepublic String toString() {return "LicenseLogModel{" +"seq='" + seq + '\'' +", handleSeq='" + handleSeq + '\'' +", userCode='" + userCode + '\'' +", certCode='" + certCode + '\'' +", certTime=" + certTime +", controlSeq='" + controlSeq + '\'' +'}';}
}
LicenseLogModel logModel = new LicenseLogModel.Builder(monService.generateUUID()).setHandleSeq(controlStuff.getHandleSeq()).setUserCode(userCode).setCertCode(authCode).setCertTime(new Date(System.currentTimeMillis())).setControlSeq(controlStuff.getControlSeq()).build();

参考同事写的工具类:

package .template.utils;import java.util.HashMap;
import java.util.Map;
/*** 信息工具类* @date 2018-05-22*/
public class Maps {/*** 成功状态值*/public static final String SUCCESS_VALUE = "1";/*** 失败状态值*/public static final String ERROR_VALUE = "0";/*** 信息key*/public static final String MESSAGE_KEY = "message";/*** 状态key*/public static final String STATE_KEY = "status";/*** 数据key*/public static final String DATA_KEY = "data";private Maps(){}/*** 获取信息MapMessage实例* @return*/public static MapMessageBulider MapMessageBulider(){return new MapMessageBulider();}/*** 内部类:信息* @author csy* @date 2018-05-22*/public static class MapMessageBulider{private Map<String, Object> innerMap = new HashMap<String, Object>();/*** 自由封装key/value* @param key* @param value* @return*/public MapMessageBulider setKeyValue(String key,Object value){this.innerMap.put(key, value);return this;}/*** 返回map* @return*/public Map<String, Object> bulid(){return this.innerMap;}/*** 设置成功返回值及信息* 已设置默认的suess/message/data key* @param data 数据* @param message 成功信息* @return*/public Map<String, Object> setSuessBulid(Object data,Object message){this.setKeyValue(STATE_KEY, SUCCESS_VALUE).setKeyValue(MESSAGE_KEY, message).setKeyValue(DATA_KEY, data);return this.bulid();}/*** 设置返回失败数据及信息* 已设置默认的suess/message/data key* @param data 数据* @param message 失败信息* @return*/public Map<String, Object> setErrorBulid(Object data,Object message){this.setKeyValue(STATE_KEY, ERROR_VALUE).setKeyValue(MESSAGE_KEY, message).setKeyValue(DATA_KEY, data);return this.bulid();			}}
}

更多推荐

模式,系列之,实体类

本文发布于:2023-05-25 16:35:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/315080.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   系列之   实体类

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!