求生声明:小弟是个初学者,理解得不到位的地方,欢迎各位大佬指出,必虚心改进,但也拒绝喷子和引战。
最近在工作碰到了封装,设计模式恰好也看到了策略模式和装饰者模式,两者理解碰撞在一起感觉收获很多,特记下来。
1、JAVA中的封装
第一次遇到封装,还是背面试题的时候,说实话忘得差不多了。 你呢?你对封装的理解是什么?

1、封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。
2、面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。
3、通常情况下,只要记住让变量和访问这个变量的方法放在一起,将一个类中的成员变量全部定义成私有的,只有这个类自己的方法才可以访问到这些成员变量,这就基本上实现对象的封装,就很容易找出要分配到这个类上的方法了,就基本上算是会面向对象的编程了。把握一个原则:把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中。
2、我的理解
在工作中没有用到JAVA,直接说说对代码封装的理解吧!
一、减少重复代码,减少出错几率。
实现代码复用,毋庸置疑能减少编写代码的时间,提高工作效率。但能不能减少出错几率,各持己见。我支持的是更少的代码,BUG更少,前提是逻辑尽量严谨。
二、同一个逻辑只有一处实现(代码)。
自己一个人写小项目的时候,没有体会到这一点,但在工作中深有体会:工作中是多人合作,人员更换也频繁。
【案例说明】
同一段逻辑在5处需要,如果A在每处都写一次,那下次B来修改的时候,不一定能找到5处。B改完1处,发现处理结果还是没变,又去找,改完3处发现还是有部分结果没变,那他肯定会问候A的家人。不一定是B,A自己过段时间来修改,也不一定记得全。
所以,这时候封装思想就可以大显身手了,将逻辑封装起来,在多处调用,这样别人需要改逻辑的时候也只用改一处就好了。
这样做的另一个好处就是,使这段逻辑,只有一个入口,统一由你掌控。对整个项目的数据扭转更好的控制。(说实话作为初学者我讲不清楚)
———————————————————————————————
是不是发现这就是Java的封装思想?在第一段的最后:
“把握一个原则:把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中。”
如果你体会到了这一点,那么同时你也掌握了策略模式,看来设计模式并没有我们想象的那么难。

三、有利于协同开发
如果将逻辑的实现细节封装起来,给外部提供调用接口,调用者遵循封装时制定的简单规范,就能轻易的实现逻辑,避免了重复造轮子。
结语
打个广告,欢迎大家关注公众号,会分享一些日常学习笔记和心得。
不是什么大佬,非科班出身,自学走了很多弯路,深感自学基础知识不扎实和没有项目经验的短板,特意想分享给迫切成长的小伙伴,但还是要劝退一下想转行进IT的,黄金时间已经过去了,现在真的不适合了。
最后说一句:不喜勿喷!

