【发布时间】:2013-12-16 11:09:58
【问题描述】:
我在 Google Play 商店中准备并运行了一个应用程序,现在我正在实现片段。
所以,我已经有一个用一些方法扩展 B 的 A 类,现在我有 C 扩展 FragmentActivity 的类,所以现在我需要使用与 A 类中相同的方法,但由于我正在扩展 FragmentActivity,我无法使用B类的,所以这里有与A类相同的重复方法,但我需要重用这些方法。
下面这个例子显示了我的情况:
例如:
当前实施
class A extends B{
one();
two();
}
整合片段后,
例如:
class C extends FragmentActivity{
one();// same methods as in class A
two();// same methods as in class A
}
1) 在这种情况下重用这些方法的最佳方式是什么?如何实现?
2) 我的想法是创建一个类并将方法设为静态并在 A 和 C 类中重用方法,但是我的方法很好吗?我可以将方法设为静态吗?好办法?
3) 我想到的另一种方法“策略模式”。
Eg:
class A extends ApiClass {
private ClassContainingDupMethod strategy;
}
class N extends AnotherApiClass {
private ClassContainingDupMethod strategy;
public methodCallingDupMethod(){
strategy.dupMethod();
}
}
class ClassContainingDupMethod{
public dupMethod(){;}
}
“策略模式”。是一个好方法吗?因为我需要在两个类中创建公共类的对象。
对此的任何建议将不胜感激。
【问题讨论】:
-
让您的问题更清楚,这将有助于我们更好地理解它。
-
@VipulPurohit 查看我的编辑
-
您应该提供有关方法一和方法二的作用/目标的更多信息。可以将它们提取为服务方法并使其成为静态,或者在您想要使用这些方法的所有类中使用包含对类(已实现这些方法)的引用的“组合”。跨度>
-
@hovanessyan 在这里我的目标是尽可能避免重复方法,我不想使用静态方法,并且关于方法 one() 和 two() 方法它们具有相同的实现。
-
建议:不要只从“最佳技术/编程方法”的角度来考虑解决方案——这可能并不重要。多想清楚、简单、易懂的解决方案。如果可能的话 - 进行模拟实现以展示不同的方法,并询问同事哪个对他来说更清楚。
标签: java android android-fragments