文档章节

第四章:类和接口。ITEM13:使类和成员的可访问性最小化。

t
 twoslow
发布于 2014/09/04 15:04
字数 599
阅读 9
收藏 0

信息隐藏是软件程序设计的基本原则之一,面向对象又为这一设计原则提供了有力的支持和保障。这
里我们简要列出几项受益于该原则的优势:
1.更好的解除各个模块之间的耦合关系:
由于模块间的相互调用是基于接口契约的,每个模块只是负责完成自己内部既定的功能目标和单元测
试,一旦今后出现性能优化或需求变更时,我们首先需要做的便是定位需要变动的单个模块或一组模块,
然后再针对各个模块提出各自的解决方案,分别予以改动和内部测试。这样便大大降低了因代码无规则交
叉而带来的潜在风险,同时也缩减了开发周期。


2.最大化并行开发:
由于各个模块之间保持着较好的独立性,因此可以分配更多的开发人员同时实现更多的模块,由于每
个人都是将精力完全集中在自己负责和擅长的专一领域,这样不仅提高了软件的质量,也大大加快了开发
的进度。


3.性能优化和后期维护:
一般来说,局部优化的难度和可行性总是要好于来自整体的优化,事虽如此,然而我们首先需要做的
却是如何定位需要优化的局部,在设计良好的系统中,完成这样的工作并非难事,我们只需针对每个涉及
的模块做性能和压力测试,之后再针对测试的结果进行分析并拿到相对合理的解决方案。


4.代码的高可复用性:
在软件开发的世界中,提出了众多的设计理论,设计原则和设计模式,之所以这样,一个非常现实的
目标之一就是消除重复代码。

 

不要提供直接访问或通过函数返回可变域对象的实例:

1 private static finla Thing[] PRIVATE_VALUES = {...} ;
2        
3         //解决方案1
4     public static final List<Thing> VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)) ;
5     
6         //解决方案2
7     public static final Thing[] values(){
8         return PRIVATE_VALUES.clone() ;
9     }

 

© 著作权归作者所有

t
粉丝 0
博文 15
码字总数 6644
作品 0
南开
私信 提问
《Effective Java 第三版》目录汇总

经过反复不断的拖延和坚持,所有条目已经翻译完成,供大家分享学习。时间有限,个别地方翻译得比较仓促,希望有疑虑的地方指出批评改正。 第一章简介 忽略 第二章 创建和销毁对象 1. 考虑使用...

M104
04/04
0
0
第13条:使类和成员的可访问性最小化

为什么要使类和成员的可访问性最小化? 可以有效的解除系统中各个模块的耦合度、实现每个模块的独立开发、使得系统更加的可维护,更加的健壮。 2. 如何最小化类和接口的可访问性? (1)能将...

添仔哥哥
2017/08/23
18
0
Delphi 面向对象编程 第二章

类的声明是一种类型声明,在delphi中,类被当作一个类型来声明,语法为: type classname = class (baseclass) {field } {procedure and function } {property } end; 注意:1、类的声明可以...

CODER-SU
2011/12/20
236
1
Effective Java 第三版——15. 使类和成员的可访问性最小化

Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8...

M104
2018/01/06
0
0
Effective-java 3 中文翻译系列 (Item 15)

(因为公司临时安排做安卓,就学了两天java,到现在用Java也有一年半了)。一直觉得自己的Java基础不太好。就想着等下班学学吧。但是当自己看了Effective-java2的中文翻译版之后,发现极其难...

薛银亮
2018/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部