封装,就是基于对一个事物的抽象分析、概念分离,把它本质的或者抽象者所关注的属性点,收集到我们所说的类Class中。属性的访问权限如何,取决于Class的使用场景。但,一般为私有private,通过相关方法的定义及设计(如set、get等)为外部访问类提供可访问操作的接口。
封装基于抽象,封装的本质在于属性点。有人或许说方法的封装才是本质所在。但,方法的作用是什么,不是在设计逻辑上对属性点的修改?方法可比一个人的动作行为,而属性可比人的器官等——没有眼睛,那你张不张开眼皮有什么区别?
封装的特性有很大的价值,“高内聚性”就是一个体现、“单一职责原则”是一个设计要求……
昨天看到一个这样的介绍:
在Java Web上,访问网站时,一般要考虑cookie的设计。可能一开始,会在一个Servlet上实现一个创建Cookie,并加密数据的方法。往后在用户访问系统资源前,先通过一个Filter对Cookie的信息进行解密验证,即在该Filter上实现一个解密Cookie的方法。如下:

这可以实现我们的目的,但,不是优雅的设计。
因为它更是一个面向过程的设计方法。其引发的问题是,在维护这一个cookie上,要实现的跨度是很大的,并没有内聚的。为什么我们不把关于Cookie的属性,方法封装到一个类中呢?如下:

这,可以对比上述设计方法了吧。
所以,封装的特性及应用,要理解运用好。
本文介绍了封装的基本概念,探讨了封装的本质及其在软件设计中的重要性。通过对比面向过程与面向对象设计方法,阐述了如何利用封装提高代码的内聚性和可维护性。

被折叠的 条评论
为什么被折叠?



