我希望能够动态构建一个 Activity,它具有我们拥有的一些功能(例如防止滚动、监控互联网连接、防止方向改变等)。
我们不想创建一个BaseActivity
包含所有功能的所有可能属性和抽象方法的抽象。我们将在子类中有很多空函数实现,BaseActivity
它们只需要实际实现其中的几个函数。更糟糕的是,如果我们想到另一个功能(要添加到的另一组属性和函数BaseActivity
),我们将不得不编辑每个子级BaseActivity
以实现新的抽象函数(很可能是空的)。
另一种BaseActivity
继承方法是创建仅实现我们拥有的少数功能的子类。但这将要求我们为每个功能组合创建一个子类,即使功能很少,也太多了。另外,这会导致 2+ 子类的大量重复代码实现相同的功能。
所以,我想到了实现装饰器模式,但我认为我们实际上并没有实例化一个新的活动。我们总是在它的构造函数中创建一个Intent
并指定SomeActivity.class
,然后我们调用startActivity(new Intent(getApplicationContext(), SomeActivity.class));
有没有办法拦截 Activity 的实际实例化,对其执行装饰器模式操作,然后让操作系统/应用程序将其放在堆栈顶部?
如果不是,还有哪些其他可行的方法?