java 中设计模式(值对象)的实例详解
程序员文章站
2024-02-29 15:34:58
java 中设计模式(值对象)的实例详解
应用场景:在java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这...
java 中设计模式(值对象)的实例详解
应用场景:在java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设计模式
值对象的本质是“封装数据
具体步骤:
1. 所写的类必须实现序列化serializable(序列化是为了防止数据读取的时候数据丢失)。 同时主要这个类的命名规范。值对象的命名规范: xxxvalueobject, xxxvo, xxxmodel。
2. 必须要写一个成员变量id作为主键。(这个很好理解,你传入的数据姓名啊,地址或者其他可以相同,但是一定要有一个id作为主键,来区分不同数据)
3. 必须要写一个空参的构造函数。
空参构造函数可以用来收集部分数据以及不同地方的数据(比方说你在这个页面用户只填写了姓名和性别信息,在其他地方收集到地址信息,空参很好的收集起来)
4. 写所有成员变量的set-get方法。用来收集和处理数据。为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
5. 推荐覆盖实现equals()、hashcode()和tostring()方法
具体实现代码(以传递个人地址数据为例)
import java.io.serializable; //值对象的命名规范: xxxvalueobject, xxxvo, xxxmodel //1实现序列化接口 public class addressvo implements serializable { private static final long serialversionuid = 1l; // 2私有化所有成员变量 private string userid; private string name; private int age; private boolean man; //变量名建议不要取成isman(jsp碰到这种情况会有bug) private string address; // 3 必须要有一个默认的空参构造 public addressvo() { } // 4 写所有成员变量的setter-getter方法---boolean型变量的getter方法写成isxxx()的形式 public string getuserid() { return userid; } public void setuserid(string userid) { this.userid = userid; } public string getname() { return name; } public void setname(string name) { this.name = name; } public int getage() { return age; } public void setage(int age) { this.age = age; } public boolean isman() { return man; } public void setman(boolean man) { this.man = man; } public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } //5 建议写equals,hashcode,tostring这几个方法 @override public int hashcode() { final int prime = 31; int result = 1; result = prime * result + ((userid == null) ? 0 : userid.hashcode()); return result; } @override public boolean equals(object obj) { if (this == obj) return true; if (obj == null) return false; if (getclass() != obj.getclass()) return false; addressvo other = (addressvo) obj; if (userid == null) { if (other.userid != null) return false; } else if (!userid.equals(other.userid)) return false; return true; } @override public string tostring() { return "addressvo [userid=" + userid + ", name=" + name + ", age=" + age + ", man=" + man + ", address=" + address + "]"; } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
下一篇: python万年历实现代码 含运行结果