虚幻引擎UE4材质节点初级探究视频教程
16563 人在学
相信大家在学习编程的时候都有一定的基础,面向对象它是有三个基本的特征,继承、多态、封装,在C#中或者你也接触过,本文将为带大家讲述的是java中的封装,有不懂得朋友们可以参考一下。
在Java中想要让封装的实现,是通过为私有成员提供访问器方法,也就是通常使用getter和setter的一个方法。对于这样的封装是否合适仍属争议,但如果是当成员变量为集合类型(java.util.Collection,java.util.Map以及它们的子类)时,这样实现封装是完全错误的,这一点是需要了解清楚的。
也许我们是经常能见到的代码像下面这样:
实际上这样的代码很普遍,原因是由于hibernate等ORM框架使得这种设计变得流行.
不合适的封装
在使用集合类型的情形下,这是由于Java中集合类型它自身是可变的,实际上并没有任何改变。明显的表示无论是通过构造函数传入一个集合实例的引用,还是返回它的引用,这是完全没有进行封装。只有当集合实例的引用没有(在外部)保留,也不会返回(到外部),这样真正的封装才有可能去实现的。
不能使用具体的子类
除此之外的话,MyBean类它是可能需要封装一种更具体的集合类,比如常见的List或者Set。我们从下面的代码片段可以看出,传入一个Set实际例子是不可能的。
不能选择具体的实现
根据上一点我们可以很容易联想理解到,如果是使用(外部)提供的引用的话,也是无法使用(可能为了更高效)自己定义的类,比如ApacheCommons的FastArrayList这些。
实现的一些建议,看到以下的代码可以是做到了真正封装的出发点。
使用这种方式解决了前面提到的几个问题:
1.集合实例的引用没有从构造函数中传入,这样就不可能在实例外部改变实例。
2.由于是完全隔离,则是可以自由地选择集合的实现,为修改留下了一定的余地。
3.不能通过getter访问器方法获得被封装的集合实例的引用。
注意:为了可读性,前面的代码片段没有使用泛型。请在实际使用中加上。
总结:java的封装集合相对来说是比较简单一点的,在面向对象程式设计方法中,封装(英语:EncaPSulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
共4节 · 1小时1分钟
免费938人在学
共29节 · 2小时18分钟
¥234.007732人在学
共4节 · 56分钟
免费4512人在学
共31节 · 8小时37分钟
¥399.00¥200.0010064人在学