我正在开发一个Android项目,我正面临这种情况.
我有2节课:
class A extends B
{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
class X extends Y{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你观察到两个类openDoor()和两个常见的方法closeDoor()
什么是避免重复方法的最佳方法?
我的方法
class ContainingDuplicateMethods{
openDoor(){
//impl
}
closeDoor(){
//impl
}
}
}
Run Code Online (Sandbox Code Playgroud)
在类中创建ContainingDuplicateMethods对象并调用方法,我们将其称为策略模式,但这是最佳解决方案吗?为什么,因为在大型项目中我们不能遵循这种方法,人们说它不是很好的做法,在这种情况下,我需要遵循什么方法?
请注意,class A and X已经扩展了其他类,我也不想使用静态因为 - 静态成员在程序执行开始时被加载到内存中,并且将在内存中直到程序终止,比如我的代码连续运行数天或数周继续使用静态引用创建许多对象,因此我们可能会耗尽内存.
我在我的应用程序中使用轮播.
对于拥有Android 4.2.2且仅在横向模式下的用户,他们报告此问题:
12-19 15:01:56.685: E/InputEventReceiver(7009): Exception dispatching input event.
12-19 15:01:56.685: E/MessageQueue-JNI(7009): Exception in MessageQueue callback: handleReceiveCallback
12-19 15:01:56.695: E/MessageQueue-JNI(7009): java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2076)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at com.digitalaria.gama.carousel.CarouselBehavior.dispatchTouchEvent(CarouselBehavior.java:1768)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2091)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2091)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2091)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2091)
12-19 15:01:56.695: E/MessageQueue-JNI(7009): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
12-19 …Run Code Online (Sandbox Code Playgroud)