面向对象之封装:
1.程序设计追求高内聚低耦合
(内聚就是模块内部之间的联系,耦合就是模块与模块之间的联系。)
在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则是高内聚低耦合。从模块粒度来看,高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合); 低耦合:减少类内部,一个成员方法调用另一个成员方法。从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用;从功能块来看 高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)即横向:类与类之间、模块与模块之间;纵向:层次之间;尽可能,内容内聚,数据耦合。
降低耦合度的方法
1、少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。 2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。 3、遵循一个定义只在一个地方出现。 4、少使用全局变量。 5、类属性和方法的声明少用public,多用private关键字。 6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。 7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。 8、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。 增强内聚度方法1、模块只对外暴露最小限度的接口,形成最低的依赖关系。 2、只要对外接口不变,模块内部的修改,就不得影响其他模块。 3、删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量方法用于使用
2.封装性的设计思想
隐藏对象内部的复杂性,仅对外公开简单的接口。便于外界使用,从而提高系统的可扩展性、可维护性。(把该隐藏的隐藏起来,该暴露的暴露出来)
3.封装性的体现
1.在开发中,我们把类的属性私有化(private),同时提供公共的(public)方法来对其进行获取(get)和设置(set)。
2.不对外暴露的私有的(private)方法。(仅对内使用) ......4.权限修饰符
封装性的体现需要权限修饰符来配合。
Java规定了4种权限修饰符,自小到大:private,缺省,protected,public. 它们被用来修饰类及类的内部结构(属性、方法、构造器、内部类),用来限定可以在那些地方对它们的进行访问 具体的讲,这四种权限修饰符都能修饰类的内部结构(属性、方法、构造器、内部类),但类只能由(缺省)和public修饰1.private (私有的)
可访问该类成员的对象范围:
| 类内部 | 同包下的类 | 不同包下子类 | 同一个工程 |
|---|---|---|---|
| yes | no | no | no |
2.缺省(默认)
可访问该类成员的对象范围:(包权限)
| 类内部 | 同包下的类 | 不同包下子类 | 同一个工程 |
|---|---|---|---|
| yes | yes | no | no |
3.protected (受保护的)
可访问该类成员的对象范围:
| 类内部 | 同包下的类 | 不同包下子类 | 同一个工程 |
|---|---|---|---|
| yes | yes | yes | no |
4.public (公开的)
可访问该类成员的对象范围:
| 本类 | 同包下的子类 | 同包下的其它类 | 不同包下子类 | 不同包下其它类 |
|---|---|---|---|---|
| yes | yes | yes | yes | yes |