package demo;public class Activity { public Activity(){ this.onCreate(); } public void onCreate(){ System.out.println("onCreate called"); } public void sayHi(){ System.out.println("Hello world!"); } public static void main(String[] args) { Activity a = new Activity(); a.sayHi(); }}
简单Android程序
package demo;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.append("Hello "); tv.append("world!"); setContentView(tv); }}这两个程序最大的区别就是,前者程序的运行完全由开发控制,后者程序的运行由Android框架控制.
两个程序都有个onCreate方法.
前者程序中,如果开发者觉得onCreate 名称不合适,想改为Init,没问题,直接就可以改, 相比下,后者的onCreate 名称就不能修改.
因为,后者使用了框架,享受框架带来福利的同时,就要遵循框架的规则.
这就是控制反转.
可以说, 控制反转是所有框架最基本的特征.
也是框架和普通类库最大的不同点.
很多Android开发工程师在享用控制反转带来的便利,去不知什么是控制反转.
就有点像深海里的鱼不知到什么是海水一样.
通过框架可以把许多共用的逻辑放到框架里,让用户专注自己程序的逻辑.
这也是为什么现在,无论手机开发,网页开发,还是桌面程序, 也不管是Java,PHP,还是Python框架无处不在.
回顾下之前的文件: MyFramework.java
package demo;public class MyFramework { public static void main(String[] args) { Task t = new Task("Task #1"); Coder owner = new Phper("lee4"); t.setOwner(owner); t.start(); }}这只是简单的测试程序,取名为MyFramework, 是因为它拥有框架3个最基本特征