- 应用背景:如果说A模块中有B模块需要实现不同功能的独立模块,利用反射可以初始化出B模块功能对应的实例。eg:跳转同一页面显示不同标题
- 重点:建立一个抽象类,表示功能基础单元。如:
public abstract class BaseModel{
protected void initTitle(){
/base....
}
}
利用反射实例化功能单元。
3. 建立独自功能的类:
class NameAModel extends BaseModel{
protected void initTitle(){
//A....
}
}
class NameBModel extends BaseModel{
protected void initTitle(){
//B....
}
}
4.实例化功能单元:在所需要的activity中,
private static final String INTENT_MODEL_CLASS_NAME = "intent_model_class_name";
public static void startActivity(Context context,
Class<? extends BaseModel> modelClass)
{
Intent intent = new Intent(context, activity.class);
intent.putExtra(INTENT_MODEL_CLASS_NAME, modelClass.getName());
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
try{
Class<? extends BaseModel> model = Class.forName(intent.getStringExtra(INTENT_MODEL_CLASS_NAME);
Constructor con = model.newInstance();
con.initTitle();
}catch{
}
}