讲到反射与动态装载,首先我们来介绍一个概念:
动态语言:程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。
以前我所写的代码都属于静态代码,如果修改代码,就需要重新运行一次,而之前启动的程序是根据启动时的代码来运行的,后续的修改对先启动的程序没有影响,因此JAVA不是动态语言,(另外C++,C#也不是动态语言,而Python等属于动态语言)。
但是JAVA的反射机制(Reflection),却允许在JAVA程序运行过程中对结构或变量类型等进行修改,我们可以在运行时加载并使用编译期间完全未知的classes。
动态编译的特点:在运行时确定类型,绑定对象,更能发挥JAVA代码灵活性,降低类与类间的耦合性。
简单介绍OOP、IOC、AOP:
OOP面向对象;
IOC面向接口(控制反转,也可以称为依赖倒置??);
AOP是面向切面的编程,也就是只需要负责代码中的一部分,只专注于代码中自己最关心的部分就可以了,而其他部分则由其他人代理完成。
AOP的优势是每个人只需完成自己想做的事情,其他的事情由别人来完成,每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。