我有以下问题:
我有一个抽象活动类,我们称之为MyAbstractActivity,它包含一些我想重用的代码(例如:标准服务绑定器、公共菜单项、公共初始化代码等等)。通常,我只会用它来细分我的具体活动并完成它。
但是,我偶尔需要使用另一种超级类型,如ListActivity或MapActivity。
因此,问题是:如果我必须使用另一个基类,如何避免在活动中复制支持代码?
我想出了一个基于装饰模式的解决方案,比如这个:
。
但是,我发现这种方法存在一个问题:如何处理受保护的方法(如onCreate())?我是否应该引入一个额外的“桥梁”类,使其公开以供装饰者使用,类似于下面的方式(开始看起来有点拜占庭式.)?
还有别的办法吗?
我希望我说得比较清楚。谢谢您的反馈!
PS。在我看来,使用静态实用程序类不是一个好的解决方案,因为它带来了难以识别的编程错误的可能性。
发布于 2011-04-25 11:48:24
如果我正确理解,那么无论是片段还是装饰模式,对于您想要完成的任务,都不是干净的或合适的解决方案。它们被设计用来解决其他问题。
我发现自己将“支持”代码、“框架”代码或“所有那些冗长的、重复的、样板的垃圾”移到静态实用程序方法上。这不一定是我在非Android项目上采用的方法,但在我的Android项目中,它运行得非常好。
另外,要知道,不需要对ListActivity进行子类处理就可以获得ListView。
https://stackoverflow.com/questions/5780272
复制相似问题