下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

安卓java编程基础---封装集合

作者:课课家教育     来源: http://www.kokojia.com点击数:877发布时间: 2016-11-18 13:00:17

标签: java封装java编程安卓开发

  相信大家在学习编程的时候都有一定的基础,面向对象它是有三个基本的特征,继承、多态、封装,在C#中或者你也接触过,本文将为带大家讲述的是java中的封装,有不懂得朋友们可以参考一下。

  在Java中想要让封装的实现,是通过为私有成员提供访问器方法,也就是通常使用getter和setter的一个方法。对于这样的封装是否合适仍属争议,但如果是当成员变量为集合类型(java.util.Collection,java.util.Map以及它们的子类)时,这样实现封装是完全错误的,这一点是需要了解清楚的。

  也许我们是经常能见到的代码像下面这样:

安卓java编程基础---封装集合_java封装_java编程_安卓开发_课课家

  实际上这样的代码很普遍,原因是由于hibernate等ORM框架使得这种设计变得流行.

封装

  不合适的封装

  在使用集合类型的情形下,这是由于Java中集合类型它自身是可变的,实际上并没有任何改变。明显的表示无论是通过构造函数传入一个集合实例的引用,还是返回它的引用,这是完全没有进行封装。只有当集合实例的引用没有(在外部)保留,也不会返回(到外部),这样真正的封装才有可能去实现的。

不合适的封装

  不能使用具体的子类

  除此之外的话,MyBean类它是可能需要封装一种更具体的集合类,比如常见的List或者Set。我们从下面的代码片段可以看出,传入一个Set实际例子是不可能的。

不使用合适的子类

  不能选择具体的实现

  根据上一点我们可以很容易联想理解到,如果是使用(外部)提供的引用的话,也是无法使用(可能为了更高效)自己定义的类,比如ApacheCommons的FastArrayList这些。

  实现的一些建议,看到以下的代码可以是做到了真正封装的出发点。

不能选择具体的实现

  使用这种方式解决了前面提到的几个问题:

  1.集合实例的引用没有从构造函数中传入,这样就不可能在实例外部改变实例。

  2.由于是完全隔离,则是可以自由地选择集合的实现,为修改留下了一定的余地。

  3.不能通过getter访问器方法获得被封装的集合实例的引用。

  注意:为了可读性,前面的代码片段没有使用泛型。请在实际使用中加上。

  总结:java的封装集合相对来说是比较简单一点的,在面向对象程式设计方法中,封装(英语:EncaPSulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。

  封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

  要访问该类的代码和数据,必须通过严格的接口控制。

  封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

  适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

赞(14)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程