深入理解封装的设计思想

深入理解封装的设计思想_第1张图片

相对于OOP三大基本特性其他两个:继承和多态,封装其实我认识是最重要的概念。

对于封装初步在理解的时候就是private 一个variable 然后设置get和set方法,为什么要这样做,有个大概的想法,就是不让其他的对象直接获取数据,修改数据,限制其他类的调用和使用,仅此而已,但这只是封装的体现形式,他有更深层次的含义。

我们考虑3个情况:

1)如果没有对实例变量进行private 修饰,那么多个线程在操作这个对象的时候,就会出现读后写或者写后读的矛盾问题。那么即使是要做线程安全的处理,就需要将整个类进行线程安全,但如果限制使用只能通过set和get方法,那么只需要方法进行线程安全的处理。

2)如果我们自己写出一个Util ,提供给其他程序员使用,创建Util 对象时,内部的两个变量被赋值,且在用户操作方法时需要调用,如果不设置成private,用户就会直接修改这个变量,导致方法调用与预期不同,进而导致调试困难。

3)如果我们自己写一个Util,提供给其他程序员使用,只给外部提供两个方法,但是内部需要若干变量和方法,比如一个算法必须分成三个方法,而我们不希望外界去调用到这些变量和方法就可以将他设置为private

也就是说,我们作为代码的设计者,代码多数情况不只是给我们用的,而是会提供给别人,为了让他们通过固定的方式调用,所以需要封装。

其次封装还代表着我们可以限制给固定的人调用:通过访问修饰符的形式,将方法限制在固定范围内,范围之外人不可调用方法,进一步保证了安全性。

同时作为代码的设计者,我们在向外提供代码让别人使用时,实际开发过程中别人只需要知道,传入什么参数,获得什么结果即可,具体的实现过程可以向外隐藏,如:

在Service 层向外提供服务接口的时候,具体Service实现类中使用的是JDBC还是Mybatis都与调用者无关,换个角度在持久层向上提供服务的时候,我的持久层使用的是什么类型的数据库,调用者也不需要知道。

即:通过封装隐藏实现细节,实现黑盒模型。

其实这本身也是低耦合和高内聚的实现要求即:仅暴露少量的接口给外部和数据操作细节自己完成,不允许外部干涉

综上封装的作用就体现在了:

  1. 安全性

  2. 隐藏实现细节

  3. 统一接口

  4. 便于修改代码

本篇关键词:限制访问,隐藏细节

你可能感兴趣的:(JAVA,java,封装,设计思想)