Java---设计模块(值对象)
来源:互联网 发布:python全局变量的使用 编辑:程序博客网 时间:2024/04/29 05:12
★ 场景和问题
在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?
★ 基本的编写步骤
◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源)
◎第2步:私有化所有属性,保持一个默认构造方法(public无参)
◎第3步:为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
◎第4步:推荐覆盖实现equals()、hashCode()和toString()方法
值对象的本质是“封装数据”
User 类:
package cn.hncu.pattern.factory.vo.v2.vo;import java.io.Serializable;public class User implements Serializable{ //只能将支持 java.io.Serializable 接口的对象写入流中,必须实现这个接口 private String userId; private String tel; private String address; private int age; private boolean isMale; public User() { } public User(String userId, String tel, String address, int age){ this.userId = userId; this.tel = tel; this.address = address; this.age = age; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public boolean isMale() { return isMale; } public void setMale(boolean isMale) { this.isMale = isMale; } @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; User other = (User) 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 "User [userId=" + userId + ", tel=" + tel + ", address=" + address + ", age=" + age + "]"; }}
B类:
package cn.hncu.pattern.factory.vo.v2;import cn.hncu.pattern.factory.vo.v2.vo.User;public class B { String userId=null; User user = null; public boolean sendData(User user){ //Value Object ----Model System.out.println("数据已经接受到。。。"); operate(user); return true; } private void operate(User user) { this.user = user; this.user.setUserId("CN_"+user.getUserId()); System.out.println("处理数据..."); } public User getData(){ return user; } public String getUserId(){ return userId; }}
A类:
package cn.hncu.pattern.factory.vo.v2;import cn.hncu.pattern.factory.vo.v2.vo.User;public class A { public static void main(String[] args) { B obj = new B(); User user = new User("A001", "13512345678", "hncu",20); obj.sendData(user); User data = obj.getData(); System.out.println( data.getUserId() ); System.out.println(data); User user2 = new User(); user2.setAge(21); user2.setUserId("A002"); System.out.println(user2); obj.sendData(user2); System.out.println(user2); //可以做得更好的: // Id可以用唱票模型 2318,2319,...... }}
输出:
数据已经接受到。。。处理数据...CN_A001User [userId=CN_A001, tel=13512345678, address=hncu, age=20]User [userId=A002, tel=null, address=null, age=21]数据已经接受到。。。处理数据...User [userId=CN_A002, tel=null, address=null, age=21]
0 0
- Java---设计模块(值对象)
- <java与模块>第三章面向对象设计原则笔记
- 通用模块设计–面向对象设计
- Java---设计模块(工厂方法)
- Java---设计模块(装饰模式)
- Java设计模式之------值对象模式
- Java---设计模式(值对象)
- Java的设计思想之值对象
- java设计对象处理
- Java面向对象设计
- JAVA 学习模块六: 面向对象
- Java爬虫框架(二)--模块设计
- JAVA 学习模块十: 设计模式
- 通俗易懂权限管理模块设计-Java
- java面向对象设计原则
- Java面向对象设计原则
- java面向对象设计原则
- Java空对象设计模式
- 大型广告系统架构概述
- java求学之路
- 《JAVA与模式》之装饰模式
- java中的内部类总结
- JavaScript编写人机对战五子棋(四)
- Java---设计模块(值对象)
- ListView的编写方法
- 为Intent附加数据的两种写法
- Android PagerSlidingTabStrip实现顶部栏目点击或滑动切换
- HTML头部元素
- 得到新打开Activity 关闭后返回的数据
- ACM最少步数
- python学习(1)
- 归结原理