假设类的使用者会尽一切手段来破坏这个类的约束条件,在这样的前提下,你必须保护性地设计程序。面对客户的不良行为时仍然能保持健壮性的类。
对于一个非可变类,可以考虑对其构造函数的可变参数采用保护性拷贝,如
public period(Date start, Date end){
this.start = new Date(start.getTime());
this.end = new Date(start.getTime());
// 接着做其他逻辑(保护性拷贝要在其他逻辑之前进行,并且有效性检查是针对拷贝后的对象,而不是原始对象)
}
public period(Date start, Date end){
this.start = new Date(start.getTime());
this.end = new Date(start.getTime());
// 接着做其他逻辑(保护性拷贝要在其他逻辑之前进行,并且有效性检查是针对拷贝后的对象,而不是原始对象)
}
对获取参数的get方法也要采用clone的方式返回,如:
public Date getStart(){
return (Date)start.clone();
}
public Date getStart(){
return (Date)start.clone();
}
记住非零长度的数组总是可变的,尽量使用非可变的对象作为内部组件,这样就不必关心保护性拷贝问题.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilibaba/archive/2009/04/02/4042722.aspx
分享到:
相关推荐
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
Effective Java读书笔记.pdf
Effective Java Effective Java Effective Java
effectiveJava的笔记
Effective-Java读书笔记,别人分享的
这是对Effective-Robotics-Programming-with-ROS这本书的中文学习笔记
记录了我的effective-Python学习笔记,精简了effective-Python中重要的部分。effective-Python是一本值得多看几遍的书,但是看后面的几遍的时候完全可以直接看自己的学习笔记。此学习笔记侧重与比较实用的部分即前四...
Effective java 3 学习记录
effective-java.pdf
effective-java 配套代码
2021年EFFECTIVEJAVA读书笔记.docx
Effective Enterprise Java
Effective C++学习笔记 没有时间看Effictive C++书的人可以看看这个笔记 总结出了重点啊 适合有c++基础的人阅读
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
Effective Objective-C是本学习Objective-C的好书,没有见pdf版,亚马逊上的这儿本书的价格不菲。让我们来看看书里的内容和完整的学习笔记吧。
Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理
基于Effective Java第二版的读书笔记,可以帮助你更好的阅读这边Java圣经,更快的理解其思想
【Effective Java】阅读笔记markdown 文件