【发布时间】:2013-12-18 06:32:28
【问题描述】:
我正在开发一个 Android 项目,我正面临这种情况。
我有 2 节课:
class A extends B
{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
class X extends Y{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
现在,如果您观察到 openDoor() 和 closeDoor() 类中常见的两种方法
避免重复方法的最佳方法是什么?
我的方法
class ContainingDuplicateMethods{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
}
在类中创建一个 ContainingDuplicateMethods 对象并调用方法,我们称之为策略模式,但这是最好的解决方案吗?为什么因为在大型项目中我们不能遵循这种方法,人们说这不是好的做法,在这种情况下我需要遵循什么方法?
请注意class A and X 已经在扩展其他类,而且我也不想使用静态,因为 - 静态成员在程序执行开始时被加载到内存中,并且将在内存中直到程序终止,比如我的代码运行连续几天或几周,并继续使用静态引用创建许多对象,因此我们可能会耗尽内存。
【问题讨论】:
-
1.使用抽象类..把你的常用方法放在那里......其他想要使用这些方法的类可以通过扩展抽象类来实现...... 2.如果你已经在扩展另一个类,你几乎没有选择。 .
-
@TheLostMind 是的,但是我的 A 和 X 班已经在扩展课程了
-
然后创建一个通用的 utils 类并将这些方法设为静态。您可以通过“UtilsClass.openDoor()”在您的其他类中直接使用这些常用方法,无需继承...
-
@TheLostMind 请看我的编辑
-
我认为你必须使用使用策略模式。我在这里没有看到任何其他选项...我不是静态方法/字段的忠实粉丝:P
标签: java android code-duplication