JavaEE第一篇 从Java多态到Spring框架

一,什么是多态

多态意味着“不同的形式”,指允许不同子类型的对象对同一消息做出不同的响应。

多态是继数据抽象和继承之后的第三者基本特征,是一种不能单独来看待的属性,相反只能作为类关系全景中的一部分,与其他特性协同工作,实现程序的可扩展性,消除类型之间的耦合关系。
多态也被成为动态绑定,后期绑定和运行时绑定,即运行时根据对象类型进行绑定。实现多态的方式有两种:一是(通过数据抽象,继承,接口实现的)方法重写,二是通过转型实现的对象造型。

如图,对同一消息的处理,不同子类型对象做出的回应可能不一样,这种性质叫做多态。

二,Java转型和Java代理

在Java多态中,对象造型的方式对应的概念叫Java转型,Java转型分为向上转型和向下转型。

向上转型指的是父类引用可以指向子类对象,比如Object o1 = new Square();我们把一个物体的父类引用指向了其子类的对象,调用方法还是子类中的方法。父类与子类调用顺序:

1.父类静态代码块

2. 子类静态代码块

3.父类构造方法

4.子类构造方法

5. 子类普通方法

6.子类重写的父类方法

不过,子类引用不能指向父类对象,所以如果需要向下转型,就需要强制转换,如:Square s1 = (Square) o1;可是这样显然没什么用处。

后来经过商业模式的开发运作,我们发现如果想要多态具有真实性封装和粒度控制的特性,就需要另外一种机制即代理的作用。

其实静态代理很好理解,就是写一个新的代理类将我们需要的方法封装进代理类的一个新方法中,需要调用的时候调用其方法即可。然而当类的种类越来越多,每个类都有getXxx(String name)方法,每个类都要加入缓存功能,使用静态代理虽然也能实现,但是也是略显繁琐,需要手动一一创建代理类。

这就是产生动态代理的原因,我们可以通过Java反射的调用获取类的信息,然后将创建代理类这一过程抽象出来,改成通用的过程。

JDK动态代理只能实现接口的类生成代理,而不能针对类,不需要第三方库。
CGLIB针对类实现代理,对指定的类采用继承的方式生成一个子类,依赖第三方库

三,什么是Spring

Spring是一个轻量级应用的开发框架,抽象了我们在许多应用开发中遇到的共性问题。Spring的设计理念是:在JavaEE的应用开发中,支持POJO和使用JavaBean的开发方式,使应用面向接口开发,支持OO的设计方法。
即 使用Java对象就能进行JavaEE开发,而非必须依靠EJB,使开发部署测试得到简化;通过IoC容器对复杂的对象耦合关系解放出来。

参考资料:

Java编程思想第四版(Thingking in Java)

Spring技术内幕第二版

猜你喜欢

转载自blog.csdn.net/wannuoge4766/article/details/88551046
今日推荐