关于面向对象封装的思考--持续更新

1. 字段通常定义为private,属性通常实现为public,而方法在内部实现为private,对外部实现为public,从而保证对内部的数据的可靠性读写控制,保护了数据的安全和可靠,同时又提供了与外部接口的有效交互。

2. 观点一为常规情况,到具体操作还是需要根据实际设计而定。例如:有时候将属性实现为private,也将方法实现为private是更好的选择。

3. 从内存和数据持久性角度来考虑,有一个很重要但常常被忽视的事实是,封装属性提供了数据持久化的有效手段。因为对象的属性和对象一样在内存期间是常住的,只要对象不被回收,其属性值也将一直存在,并且记录最近一次对其更改的数据。

4. 在面向对象中,封装的意义还远不之类设计层面对字段、属性和方法的控制,更重要广义的层面是保证:
1) 隐藏系统实现细节,保证系统的安全性和可靠性
2) 提供稳定不变的对外接口。因此,系统中相对稳定部分常常被抽象为接口
3) 封装保证了代码的模块化,提供软件的复用和功能的分离


封装规则:
1. 尽可能的调用类的访问器,而不是成员,即使在类的内部
2. 内部私有部分可以任意更改,但是一定要在保证外部接口稳定的情况
3. 对字段的读写控制实现为属性,而不是方法
4. 类封装是由访问权限来保证的,对内部实现为private,外部为public

接口规则:
1. 接口隔离原则强调接口应该被实现为具有单一功能的小接口,而不要实现具有多个功能的胖接口
2. 接口支持多继承,既可以作用于值类型,也可以作为引用类型
3. 禁止为已经发布的接口添加新成员,这意味着你必须重新修改所有实现了该接口的类型;
4. 接口不能被实例化,没有构造函数,接口成员被隠式的声明为public


设计原则:
1. 单一职责原则
2. 开放封闭原则
3. 依赖导致原则:应该依赖于抽象而不是具体
4. 接口隔离原则:尽量应用专门的接口,而不是单一的总接口,接口应该面向用户,将依赖建立在最小的接口上。
5. Liskov替换原则:子类必须能够替换其基类
6. 迪米特法则:最少知识原则,软件实体应该尽可能少的和其他软件实体发生相互作用
7. 合成、聚合复用原则:在新对象中聚合已有对象,使之成为新对象的成员,从而通过操作这些对象达到复用的目的。应该少继承多聚合。


单一职责原则:关键点在于引起来变化的原因来把握,而不是根据功能点来划分。代表模式是:Facade和Proxy

开放封闭原则:核心思想是对抽象编程而不是对具体进行编程。
(Liskov替换原则和合成聚合原则)
代表设计模式为:Template Method 和 Strategy模式

原文地址:https://www.cnblogs.com/KruceCoder/p/10370844.html