详解。。。设计模式3——值对象。。。studying
来源:互联网 发布:广告任务平台 源码 php 编辑:程序博客网 时间:2024/05/02 21:26
设计模式3——值对象
★ 场景和问题
在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,
---也要获取方法的返回值,该如何能更好的进行数据的交互?
★ 基本的编写步骤
◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源)
◎第2步:私有化所有属性,保持一个默认构造方法(public无参)
◎第3步:为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
◎第4步:推荐覆盖实现equals()、hashCode()和toString()方法
值对象的本质是“封装数据”,一般用于网络。
Java代码解释:
package cn.hncu.patterns.exercise.vo;/* * 试用场景: * 进行网络数据传输时。 * 例如使用函数返回传参, * 这是函数也需要接参; * 那么就用到值对象模式了, * 将数据包装成一个整体, * 接收一个整体,返回一个整体, * 那么数据传输时就快捷一些了 * (相比于函数传输基本数据类型, * 在网络上数据传输速度没有本机内存访问速度快)。 */public class VOTest {/* * 用户需要传输一个字符串 */public String t1(String name) {return name;}/* * 服务器想要添加一个数据age, * 这里不建议全部连成字符串。 * 那么这时数据传输就会出问题。 */public String t2(String name, int age) {return name;}/* * 值对象模式 */public Data t3(Data d) {return d;}public static void main(String[] args) {}}
package cn.hncu.patterns.exercise.vo;import java.io.Serializable;public class Data implements Serializable {private static final long serialVersionUID = 1L;private String name, telephone;private boolean isAlive;public Data(){}public Data(String name, String telephone, boolean isAlive) {this.name = name;this.telephone = telephone;this.isAlive = isAlive;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}public boolean isAlive() {return isAlive;}public void setAlive(boolean isAlive) {this.isAlive = isAlive;}@Overridepublic String toString() {return "Data [name=" + name + ", telephone=" + telephone + ", isAlive="+ isAlive + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + (isAlive ? 1231 : 1237);result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result+ ((telephone == null) ? 0 : telephone.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Data other = (Data) obj;if (isAlive != other.isAlive)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (telephone == null) {if (other.telephone != null)return false;} else if (!telephone.equals(other.telephone))return false;return true;}}
0 0
- 详解。。。设计模式3——值对象。。。studying
- 详解。。。设计模式2——工厂。。。studying
- 详解。。设计模式5——DAO。。studying
- 详略。。。设计模式4——装饰模式。。。studying
- 详略。。设计模式1——单例。。。。studying
- 详略。。设计模式2——单例变形(多例).。。。studying
- 粗略。。。java设计模式总结。。。studying
- MVC——studying
- 设计模式——策略模式详解
- 设计模式——状态模式详解
- 设计模式——迭代器模式详解
- 设计模式——外观模式详解
- 设计模式——观察者模式详解
- 设计模式——适配器模式详解
- 设计模式——装饰模式详解
- 详解设计模式——适配器模式
- 详解设计模式——外观模式
- 详解设计模式——观察者模式
- curl例子
- NSString/NSMutableString/NSNumber/NSValue
- Android View的绘制流程
- HDU 5339 Untitled
- 观察者模式(Observer)
- 详解。。。设计模式3——值对象。。。studying
- 跳跃游戏
- 为何学霸、做不了Leader?(对于学渣来说,是治愈系哈哈)
- Spring-boot 学习笔记(1)
- POJ - 1679 The Unique MST(次小生成树)
- 笔试2015
- C动态非连续数组
- 开放数据处理服务ODPS
- 常用iOS URL Scheme附录