博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13 使类和成员的可访问性最小化
阅读量:7005 次
发布时间:2019-06-27

本文共 679 字,大约阅读时间需要 2 分钟。

  要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰地隔离开来。

  信息隐藏之所以非常重要有许多原因,其中大多数理由都源于这样一个事实:它可以有效的解除组成系统的各个模块之间的耦合关系,使得这些模块可以独立地开发、测试、优化、使用、理解和修改。

  第一个规则很简单:尽可能地使每个类或者成员不被外界访问。

  对于顶层的(非嵌套)的类和接口,只有两种可能的访问级别:包级私有的(package-private)和公有的(public)。如果类或者接口能够被做成包级私有的,它就应该被做成包级私有。

  如果一个包级私有的顶层类(或者接口)只是在某一个类的内部被用到,就应该考虑使它成为唯一使用它的那个类的私有嵌套类。这样可以将它的可访问范围从包中的所有类缩小到了使用它的那个类。然而,降低不必要公有类的可访问性,比降低包级私有类的顶层类更重要的多:因为公有类是包的API的一部分,而包级私有的顶层类则已经是这个包的实现的一部分。

  如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别。

  实例域决不能是公有的。如果域是非final的,或者是一个指向可变对象的final引用,那么一旦使这个域成为公有的,就放弃了对存储在这个域中的值进行限制的能力;这意味着,你也放弃了强制这个域不可变的能力。

转载于:https://www.cnblogs.com/lsf90/p/3735431.html

你可能感兴趣的文章
启动网卡报错Failed to start LSB: Bring up/down network
查看>>
centos 升级4.0 内核
查看>>
Ubuntu配置永久生效的alias总结
查看>>
Tcp/Ip Http Socket的区别
查看>>
理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)
查看>>
我的友情链接
查看>>
tp5, laravel, yii2我该选择哪个
查看>>
compositionEnd 和 input 事件(中文输入法问题)
查看>>
Nginx基本安装配置
查看>>
Nginx支持php配置
查看>>
观察者模式
查看>>
轻量级IOC容器IOCFactory发布。
查看>>
js 关闭当前页面
查看>>
OCP笔记部分整理-学习参考
查看>>
Fedora 中使用逻辑卷管理器调整LVM分区大小
查看>>
IOS TableView Cell重用机制
查看>>
label中for属性
查看>>
VS2010的快捷键;VS2012变化的快捷键
查看>>
Android 音视频开发入门指南
查看>>
进程间通信——共享内存
查看>>