2010-11-25 59 views
3

我想提供不同的活动类型,如开启和关闭数据库连接之间的共同功能之间共同的功能。考虑下面的类:共享不同的活动类型

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并在整个类访问我的数据。但是,如果我想要这样做ListActivityExpandableListActivity呢?我需要制作一份DataActivity的副本,并让它扩展所需的类别。

这似乎真的很乱具有每个活动类型,我想它添加到多个类别重复的实现代码。

编辑 它看起来像我想要做的上面是不是真的可能因为Java的设计方式(没有多重继承)。有几种方法可以最大限度地减少代码重复,但在这种情况下继承不起作用。

回答

0

可以通过继承(我推荐)从所有这些类中扩展它们(创建BaseActivity,BaseMapActivity,BaseXXXActivity ..)或使用更有意义的聚合:Inheritance vs. Aggregation。 Android是基于Java的,所以Java的所有规则都适用。

例如:你可以在你的类像这样创建一个实例变量:`私人将对DBAdapter将对DBAdapter =新将对DBAdapter(本);

onCreate中,加上open()调用,在onDestroy调用close()。在上面的示例中,我没有必要拥有getAdapter()函数。因此至少保存一些代码行。

要减少代码,请尝试添加一个DataService类,其中包含一个instance(Context ctx)方法 - 在那里您可以根据需要创建DbHelper