- 浏览: 1336751 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
写道
package com.ijo.patterns;
public class Infomation {
private String emial;
private String telphone;
public Infomation() {
}
public Infomation(String emial, String telphone) {
this.emial = emial;
this.telphone = telphone;
}
public String getEmial() {
return emial;
}
public void setEmial(String emial) {
this.emial = emial;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
public String toString() {
return "\temial\t" + emial + "\ttelphone\t" + telphone;
}
}
public class Infomation {
private String emial;
private String telphone;
public Infomation() {
}
public Infomation(String emial, String telphone) {
this.emial = emial;
this.telphone = telphone;
}
public String getEmial() {
return emial;
}
public void setEmial(String emial) {
this.emial = emial;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
public String toString() {
return "\temial\t" + emial + "\ttelphone\t" + telphone;
}
}
写道
package com.ijo.patterns;
public class Name {
private String fristName;
private String lastName;
public Name() {
super();
}
public Name(String fristName, String lastName) {
super();
this.fristName = fristName;
this.lastName = lastName;
}
public String getFristName() {
return fristName;
}
public void setFristName(String fristName) {
this.fristName = fristName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
public class Name {
private String fristName;
private String lastName;
public Name() {
super();
}
public Name(String fristName, String lastName) {
super();
this.fristName = fristName;
this.lastName = lastName;
}
public String getFristName() {
return fristName;
}
public void setFristName(String fristName) {
this.fristName = fristName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
写道
package com.ijo.patterns;
import java.util.List;
public class User {
private int age;
private String idCard;
private Name name;
private List<Infomation> informations;
public User() {
}
public User(int age, String idCard, Name name, List<Infomation> informations) {
super();
this.age = age;
this.idCard = idCard;
this.name = name;
this.informations = informations;
}
public User(User user) {
this.age = user.getAge();
this.idCard = user.getIdCard();
this.name = user.getName();
this.informations = user.getInformations();
}
public List<Infomation> getInformations() {
return informations;
}
public void setInformations(List<Infomation> informations) {
this.informations = informations;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
public String toString() {
String str = "aget\t" + age + "\tIdcard\t" + idCard + "\tfirst+\t"
+ name.getFristName() + "\tlastname+\t" + name.getLastName();
for (Infomation infomation : informations) {
str = str + infomation.toString();
}
return str;
}
}
import java.util.List;
public class User {
private int age;
private String idCard;
private Name name;
private List<Infomation> informations;
public User() {
}
public User(int age, String idCard, Name name, List<Infomation> informations) {
super();
this.age = age;
this.idCard = idCard;
this.name = name;
this.informations = informations;
}
public User(User user) {
this.age = user.getAge();
this.idCard = user.getIdCard();
this.name = user.getName();
this.informations = user.getInformations();
}
public List<Infomation> getInformations() {
return informations;
}
public void setInformations(List<Infomation> informations) {
this.informations = informations;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
public String toString() {
String str = "aget\t" + age + "\tIdcard\t" + idCard + "\tfirst+\t"
+ name.getFristName() + "\tlastname+\t" + name.getLastName();
for (Infomation infomation : informations) {
str = str + infomation.toString();
}
return str;
}
}
写道
package com.ijo.patterns;
public class FactoryUser {
public static User getUser(User user){
return new User(user);
}
}
public class FactoryUser {
public static User getUser(User user){
return new User(user);
}
}
写道
package com.ijo.patterns;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<Infomation> list = new ArrayList<Infomation>();
list.add(new Infomation("ming@yahoo.com.cn", "100"));
list.add(new Infomation("ming@hotmail", "120"));
User user = new User(20, "sichuanidcard", new Name("zhang", "san"),
list);
System.out.println(user.toString());
User userCopy = FactoryUser.getUser(user);
System.out.println(userCopy.toString());
System.out.println();
user.setName(new Name("wang", "wu"));
list = user.getInformations();
Infomation infomation = list.get(0);
infomation.setEmial("test@test.com");
infomation.setTelphone("888");
System.out.println(user.toString());
System.out.println(userCopy.toString());
System.out.println();
list = new ArrayList<Infomation>();
list.add(new Infomation("jiang@yahoo.com.cn", "123"));
list.add(new Infomation("jiang@163.com", "456"));
user.setInformations(list);
System.out.println(user.toString());
System.out.println(userCopy.toString());
}
}
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<Infomation> list = new ArrayList<Infomation>();
list.add(new Infomation("ming@yahoo.com.cn", "100"));
list.add(new Infomation("ming@hotmail", "120"));
User user = new User(20, "sichuanidcard", new Name("zhang", "san"),
list);
System.out.println(user.toString());
User userCopy = FactoryUser.getUser(user);
System.out.println(userCopy.toString());
System.out.println();
user.setName(new Name("wang", "wu"));
list = user.getInformations();
Infomation infomation = list.get(0);
infomation.setEmial("test@test.com");
infomation.setTelphone("888");
System.out.println(user.toString());
System.out.println(userCopy.toString());
System.out.println();
list = new ArrayList<Infomation>();
list.add(new Infomation("jiang@yahoo.com.cn", "123"));
list.add(new Infomation("jiang@163.com", "456"));
user.setInformations(list);
System.out.println(user.toString());
System.out.println(userCopy.toString());
}
}
结果:
写道
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial ming@yahoo.com.cn telphone 100 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial ming@yahoo.com.cn telphone 100 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ wang lastname+ wu emial test@test.com telphone 888 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial test@test.com telphone 888 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ wang lastname+ wu emial jiang@yahoo.com.cn telphone 123 emial jiang@163.com telphone 456
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial test@test.com telphone 888 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial ming@yahoo.com.cn telphone 100 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ wang lastname+ wu emial test@test.com telphone 888 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial test@test.com telphone 888 emial ming@hotmail telphone 120
aget 20 Idcard sichuanidcard first+ wang lastname+ wu emial jiang@yahoo.com.cn telphone 123 emial jiang@163.com telphone 456
aget 20 Idcard sichuanidcard first+ zhang lastname+ san emial test@test.com telphone 888 emial ming@hotmail telphone 120
由结果看来,主要是是一个浅拷贝,不是深拷贝。 这种设计模式很容易出错的了
发表评论
-
J2ME 的优化措施
2012-07-11 02:15 1178常见的性能瓶颈:1.文件的读写和网络的操作2.CPU3.内存4 ... -
JAVA缓存 - Cache类
2011-09-28 11:04 4619JAVA缓存有两种: 一、文件缓存,是指把数据存储在磁盘上 ... -
Java注释(Annotation)详解
2011-03-31 18:22 2404注释:在一个类中可以有多个,类似于一个类可以有多个实例; ... -
Java去除字符串中的空格、回车、换行符、制表符
2011-02-15 11:06 3559本方法采用的是java的正则表达式 import jav ... -
线程池编程
2011-01-23 21:02 1107线程池编程 -
设计模式:Java语言中的应用
2011-01-23 20:59 1325设计模式:Java语言中的应用 -
java用了中间缓存变量
2011-01-23 18:37 2405Java语法、语言特性与机制 2011-01-22 19:1 ... -
Java集合总结
2011-01-19 11:16 3825Set:不区分元素的顺序,不允许出现重复的值list:区分元素 ... -
java.util.current的主要方法简介
2011-01-08 22:18 3438JDK5中增加了Doug Lea的并发库,这一引进给java线 ... -
线程池
2011-01-08 21:03 2074对每个客户都分配一个新的工作线程。当工作线程与客户通信结束,这 ... -
SimpleDateFormat
2010-12-10 16:11 1366With SimpleDateFo ... -
使用 XStream 在 JavaBean 与 XML/JSON 之间相互转换
2010-12-10 14:24 1565XML 和 JSON 是当今常用的两种数据描述与传输的格式,特 ... -
Linux上JDK的 安装和卸载 详细 (转)
2010-11-27 15:48 1930安装 1. 去http://java.sun.com ... -
java 路径问题
2010-11-26 16:21 13051.JSP/Servlet中获得当前应用的相对路径和绝对路径 ... -
对synchronized(this)的一些理解
2010-11-25 23:41 1029一、当两个并发线程访问同一个对象object中的这个synch ... -
Externalizable
2010-11-20 22:41 1366被Serializable接口声明的类的对象的内容都将被序列化 ... -
Java实现文件拷贝的4种方法(转)
2010-11-15 12:33 1253... -
Java内省和反射机制三步曲之 - 内省
2010-11-11 12:15 1347经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java ... -
java内省机制
2010-11-11 11:10 2401反射 (Reflection):反射就是让你可以通 ... -
Design Pattern: Thread-Specific Storage 模式
2010-11-11 00:00 1217无论如何,要编写一个多执行绪安全(thread-safe)的程 ...
相关推荐
备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...
- 类封装:备忘录类通常被设计为不可修改,这就需要通过类的封装机制限制对备忘录状态的访问。 - 智能指针:为了避免内存泄漏和管理资源,可以使用智能指针来自动管理备忘录实例的生命周期。 备忘录模式在实际应用...
同时,为了防止内存泄漏,可能需要使用智能指针或垃圾回收机制来管理备忘录对象的生命周期。 总之,备忘录模式在需要记录和恢复对象状态的场景中非常有用,尤其是在注册这类需要保护用户数据的操作中。通过理解并...
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获和恢复一个对象的内部状态。在C++中实现备忘录模式,可以...在C++中实现备忘录模式,利用智能指针和友元机制,能够确保内存管理的正确性和安全性。
同时,为了保护备忘录的封装性,可以使用私有继承和友元机制来限制对备忘录内容的访问。 以下是一个简单的C++ Memento模式的示例: ```cpp class Originator { private: int state; // ... public: Originator...
备忘录模式(Memento Pattern)是一种设计模式,它允许...总的来说,备忘录模式在C#中提供了安全地保存和恢复对象状态的机制,是实现撤销/重做功能的一种有效设计模式。在实际开发中,可以根据具体需求灵活运用和优化。
**备忘录模式**(Memento Pattern)是一种用于在不破坏对象封装性的情况下,保存并恢复对象内部状态的行为型设计模式。它允许用户在任意时刻撤销或重做某个操作,从而达到一种“后悔药”的效果。 备忘录模式主要...
2. **备忘录(Memento)**:备忘录类用于存储发起人的状态,它包含了发起人需要备份的所有数据。备忘录通常有两个接口:一个是供发起人设置和获取状态的内部接口,另一个是供管理者操作的外部接口,确保只允许读取...
2. **备忘录(Memento)角色**:备忘录存储发起人的内部状态,但不能有除了发起人之外的其他类访问这些信息。备忘录通常有两个接口:一个是公开的,只允许发起人读写;另一个是私有的,用于存储和恢复状态。 3. **...
1. **备忘录类(Memento)** 备忘录类是保存原发器对象内部状态的关键。它通常包含一组数据成员,用于存储原发器对象的私有状态。备忘录类可以有两个版本:一个是具体备忘录,它实现了存储和恢复对象状态的具体操作...
2. **备忘录(Memento)**:备忘录对象存储发起者的状态,但对外界应该是不可见的。在示例中,`Memento` 类仅有一个私有的 `state` 属性,通过构造函数从发起者那里获取状态,而提供了一个 `getState` 方法供发起者...
【备忘录模式(Memento Pattern)】是一种设计模式,主要目的是为了在不破坏对象封装性的前提下,能够保存和恢复对象的内部状态。这种模式常用于实现撤销/重做功能,例如在文本编辑器、游戏或数据库管理系统中。通过...
2. 备忘录(Memento):存储原始对象的内部状态,通常是一个私有类,只提供给原始对象访问,以保持封装性。 3. 客户端(Client):创建原始对象,并使用备忘录对象来保存和恢复对象的状态。 在实现备忘录模式时,有...
备忘录模式是一种在软件设计中...在Java中,我们可以利用Java的序列化机制或者自定义数据结构来实现备忘录,以满足不同场景的需求。在进行复杂业务逻辑处理时,合理使用备忘录模式可以大大提高代码的可读性和可维护性。
当我们在实际应用中需要提供撤销机制,当一个对象可能需要再后续操作中恢复其内部状态时,就需要使用备忘录模式。其本质就是对象的序列化和反序列化的过程,支持回滚操作。 作用 在不破坏封装性的前提下,捕获一个...
详细介绍GoF设计模式以及应用... 创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态)....行为模式:设计模式之Template,设计模式之Memento(备忘机制).................
设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter...
设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter...
2. **数据共享访问**:允许用户在不同设备之间同步备忘录数据,可能通过集成Google云端服务或者实现自己的云同步机制来达到这一目标。 3. **列表浏览**:提供用户友好的界面,让用户能以列表形式查看和管理他们的...