共享不同的活动类型
问题描述:
我想提供不同的活动类型,如开启和关闭数据库连接之间的共同功能之间共同的功能。考虑下面的类:共享不同的活动类型
public class DataActivity extends Activity {
private DbAdapter mDbAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//open database
mDbAdapter = new DbAdapter(this);
mDbAdapter.open();
}
@Override
protected void onDestroy() {
super.onDestroy();
//close database
mDbAdapter.close();
}
public DbAdapter getDbAdapter() {
return mDbAdapter;
}
}
然后我可以简单地扩展DataActivity
并在整个类访问我的数据。但是,如果我想要这样做ListActivity
或ExpandableListActivity
呢?我需要制作一份DataActivity
的副本,并让它扩展所需的类别。
这似乎真的很乱具有每个活动类型,我想它添加到多个类别重复的实现代码。
编辑 它看起来像我想要做的上面是不是真的可能因为Java的设计方式(没有多重继承)。有几种方法可以最大限度地减少代码重复,但在这种情况下继承不起作用。
答
可以通过继承(我推荐)从所有这些类中扩展它们(创建BaseActivity,BaseMapActivity,BaseXXXActivity ..)或使用更有意义的聚合:Inheritance vs. Aggregation。 Android是基于Java的,所以Java的所有规则都适用。
例如:你可以在你的类像这样创建一个实例变量:`私人将对DBAdapter将对DBAdapter =新将对DBAdapter(本);
在onCreate
中,加上open()
调用,在onDestroy
调用close()
。在上面的示例中,我没有必要拥有getAdapter()
函数。因此至少保存一些代码行。
要减少代码,请尝试添加一个DataService
类,其中包含一个instance(Context ctx)
方法 - 在那里您可以根据需要创建DbHelper
。