面向对象的封装
2019-12-02靳程
文/靳程
1 Java特性之封装
Java作为一种当下非常流行的程序设计语言,面向对象的编程思想,颇受人们的喜爱;而面向对象编程语言都支持三个特性:封装,继承,多态。我们主要以Java为例来谈谈封装特性。封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,控制用户对类的修改和访问数据的程度。适度的封装可以让代码更容易理解和维护,也加强了程式码的安全性。
以分析Java的学习历程为例,从基础语法——>方法,函数——>类——>jar包——>框架,都始终在秉持一个封装的思想。由于大量的代码重复,不仅给编程人员带来了繁琐而又沉重的工作量,代码的冗余使得项目做了没有意义的放大,使得项目臃肿,进而又加重了服务器的压力、负载,降低了服务器运行的效率,除此之外,可读性也变得很差,对于后期维护造成了种种困难。
2 面向对象的封装
封装数据除了调用数据方便之外,最重要的是可以对数据进行安全的控制,Java中的封装,把数据做了封装存储起来,对于不同的访问需要设置权限管理。首先,我们需要提供一个对外的接口,好比说灯管坏了,我们没必要知道内部线路是怎样联通的,但我们至少得知道灯管的型号,然后去五金店购买新灯管,才能重新接通电路,否则就是答非所问,对不上号也没法使用,这是封装数据对外访问需要提供接口的问题;另外,资源共享的时代也是有底线的,需要对一些个人隐私数据匹配安全性保护措施,为此Java设置了四种访问控制符来划分访问权限:private,默认,protected,和public。就拿一个User类来说,里面存放的属性是name,age,IDCardPass...这些隐私属性,我们就需要设置为私有权限,通过setXXX()和getXXX()方法来与其他类关联沟通,这样就会避免了所有的类都能访问的安全隐患,保障数据的安全性。对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
从HelloWorld一 直 到 JDBC,再 到Spring,Struts2,MyBatis.经历了从变量封装,方法封装,类封装,压缩成jar包,MVC模式中的分层,再到框架中的Action(Handler)类中注解就可完成实现映射,取代了在web.xml中用多个标签做映射处理,语句简短精炼,逻辑清晰明了,开发效率也越来越高。或许我在这说取代不太合适,因为注解并不是万能的,不是所有的类或方法上都可加注解,如JdbcTemplate、SessionFactoryBean ...)这些都是第三方提供的,而注解只是能用于我们自定义编写的类,此时XML就是唯一的配置方式了。所以在开发过程中,两者是相辅相成的,开发人员需灵活运用。
正如人们所说的,越好的程序员越“懒”,这并不是真正说程序员懒惰,而是他们擅长于“Ctrl+C/Ctrl+V”。其实我有问过之前的学长,都是已经就职的程序员,他们在实践工作中的开发情况,答案基本一致。市面上存在的一些XXX信息管理系统,XXX自动办公软件...前端设计无非就是被人们已经接受的几种布局格式:‘厂’字形,‘三’字形,‘国’字形...,网上这种美观,简约大方的模板比比皆是,都是可以下载到源码的,然后再根据实际情况和用户的要求进行进一步订制更改,直到客户满意;后端的实现是其实很多功能模块的代码都是相似的,只需要修改一小部分就可以了,没事谁会花大量的时间去敲代码,所谓的敲代码,其实只需要敲一些关键部分的代码就可以了。当然,并不是说这些代码程序员就不会敲了,只是没有必要,所以一个项目中,也是符合二八定律的,真正亲自动手敲的大概只有20%左右的代码,其他的复制粘贴,这一是为了提升效率,二可以减少一些不必要的错误。在开源免费的计算机软件行业中,这里有丰富共享资源,比如GitHub,我们要学会将资源利用率达到最大化。
3 结语
综上所述,面向对象的封装思想,在软件技术开发行业起到了中流砥柱的作用,是发展阶段上的一个重要的里程碑,抽象出公共的部分作为独立的模块,解耦的同时,语义也变得简单易懂,又大大提高了开发效率。不仅如此,我们更要去学习封装这种思想,对于同类型项目的研发,市面上的产品有非常高的参考价值和意义,在最快的时间内完成广大使用者更改的需求。