美文网首页
类和成员可访问性最小化

类和成员可访问性最小化

作者: 没走过的二丁目 | 来源:发表于2018-04-18 15:14 被阅读0次

区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和实现细节,这就是软件设计的基本原则之一 ---封装

封装的原因

  • 有效的解除组成系统的各个模块之间的耦合,使得这些模块可以独立的进行开发,测试,优化等
  • 加快开发速度,各个模块之间可以并行的开发
  • 可以有效的调节性能:一旦完成了系统,并通过剖析确定哪些模块影响了性能,就可以针对模块进行优化。
  • 降低构建大型系统的风险,其中一个模块出现问题,不会影响其他模块的正确性

四种访问级别(递增):

  • 私有(private)——只有在本类中才能访问
  • 包级私有 ——声明该成员的包内部的任何类都可以访问,如果没有指定访问修饰符,就采用这个访问级别(default)
    -受保护的(protected)——该成员的类的子类可以访问
    -公有的(public )——任何地方都可以访问

规则

  • 尽可能地使每个类或者成员不被外界访问,对于顶层的类和接口,只有两种可能的访问级别,包级私有(package-private)或者公有(public),如果被设计成包级私有的,那么该类就应该是就应该是包的实现的一部分,而不是该包导出的api的一部分,以后对它进行修改替换等操作,无需担心会影响到客户端。另外如果一个包级私有类只在某一个类的内部被用到,那么就应该考虑使他成为唯一使用它的那个类的嵌套类,这样就使得类从包级私有变成,使用它的那个类私有

  • 受保护的成员应该尽量少用,当访问级别从包级私有变成受保护的,那么会大大的增加可访问性,受保护的成员是类的导出的api的一部分,必须永远得到支持

  • 如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别,这样可以确保,任何可以使用超类的实例的地方都可以使用子类的实例,如果违反了这条规则,编译会出错

  • 实例域决不能是公有的。如果域是非final的,或者是一个指向可变对象的final引用,那么一旦使这个域成为公有的,就放弃了对存储在这个域中的值进行修改的能力,这意味着,也就放弃了强制这个域不可变的能力。同时,当这个域被修改的时候,你也就失去了对它采取任何行动的能力。因此,包含公有可变域的类并不是线程安全的。只是有一种例外情况。假设常量构成了类提供的整个抽象中的一部分,可以通过公有的静态final域来暴露这些常量。

  • 注意:长度非零的数组总是可变的,所以,类具有公有的静态final数组域,或者返回这种域的访问方法,这总是错误的。如果类具有这样的域或者访问方法,客户端将能够修改数组中的内容。这是安全漏洞的一个常见根源。

 //Potential security hole! 潜在的安全漏洞
    public static final Thing[] VALUES = {...... }

相关文章

  • 使类和成员的可访问性最小化

    第十三条:使类和成员的可访问性最小化 1. 为什么要使类和成员的可访问性最小化? 可以有效的解除系统中各个模块的耦...

  • 第13条 使类和成员的可访问性最小化

    概要 1.使类和成员的可访问性最小化的意义 2.类和成员的可访问性类别 3.其他注意事项 4.最后的原则 一、使类...

  • 《Effective Java》读书笔记 —— 类和接口

    1.使类和成员的可访问性最小化 访问修饰符: private protected public 顶层的(非嵌套)类...

  • Effective Java(三) 类和接口

    类和接口 Tip-13 使类和成员的可访问性最小化 尽可能地使每个类或者成员不被外界访问 注意:长度非0的数组总是...

  • effective java 第四章 (笔记)

    第4章 类和接口 *** 第13条:使类和成员的可访问性最小化 *** 信息隐藏或封装 访问控制机制决定了类、接口...

  • 《Effective Java》第四章:类和接口

    第15条:最小化类和成员的可访问性 尽可能地让每个类或者成员不可被外界访问先复习一下基础:1.private—成员...

  • Effective Java-类和接口

    使类和成员的可访问性最小化 尽可能地使每个类或者成员不被外界访问 除了公有静态final域的特殊情况之外,公有类都...

  • 第四章类和接口

    目录 使类和成员的可访问性最小化 在公共类中使用访问方法而不是公共属性 最小化可变性 组合优于继承 如果使用继承则...

  • 类和成员可访问性最小化

    区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和实现细节...

  • 第45条:将局部变量的作用域最小化

    本条目和第13条(使类和成员的可访问性最小化)本质上是类似的,将局部变量的作用域最小化,可以增强代码的可读性和可维...

网友评论

      本文标题:类和成员可访问性最小化

      本文链接:https://www.haomeiwen.com/subject/pceekftx.html