博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java访问控制的作用
阅读量:4286 次
发布时间:2019-05-27

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

校长说的话,不是很懂但觉得很有道理的样子,记录下来

从抽象的角度来看,访问控制划分了抽象的边界。

一方面从语义上明确抽象的层次化:越公开的成员越接近抽象接口,越远离具体实现(我不是很懂)

另一方面从语法上施行双向保护 —— 既保护实现代码不受客户代码侵入,也保护客户代码不受实现代码变更的影响

从软件应变的角度来看,访问控制划分了代码修改的边界。

具体到Java上,

  • 如果修改仅仅涉及private成员,那只要检查该类的源代码即可;
  • 如果修改涉及package成员,只须检查该类所在的package内的所有类。虽然这些类可能很多,但仍可控制,毕竟package是封闭的;
  • 如果修改涉及protected成员,则不仅要检查该类所在的package内的所有类,还须检查该类的子类,如果该类本身是public,涉及的类可以超出该package的范围,已难以真正掌控;
  • 如果修改涉及public类的public成员,那就意味着任何类都可能调用该接口,也就可能因此而无法编译、运行和工作。

由此观之,访问控制越松的成员,辐射范围越广,软件重用的效率越高,承担的责任越大,修改的代价也越大,因而变化的可能性应该越小。

成熟的程序员对public和protected接口的设计一定是慎之又慎,往往在其上花的功夫更甚于具体代码的编写。

转载地址:http://vopgi.baihongyu.com/

你可能感兴趣的文章
java/多线程二
查看>>
java/设计原则
查看>>
java/GUI 编程
查看>>
java/socket编程
查看>>
java/反射/JDK新特性
查看>>
java/AJAX
查看>>
java/AJAX/JSON/XML/JQUERY
查看>>
iOS加载控制器的三种方式/loadNibName与initwithNibName的区别
查看>>
java/tomcat /http协议
查看>>
java/severelet
查看>>
iOS编译问题的N种可能
查看>>
java/session/cookie/jsp(一)
查看>>
java/jsp/cookie/session/EL\context和request的生命周期(二)
查看>>
java/jsp/page/include/talib/javaBean、BeanUtils
查看>>
java/JSTL/EL函数/标签
查看>>
java/MySql
查看>>
java/jdbc数据库操作、事务处理、批处理、分页查询、元数据、
查看>>
java/事务与连接池
查看>>
iOS应用跳转到appstore更新和评价
查看>>
iOS MBProgressHUD的基本用法
查看>>