在Android中,我创建了一个扩展View
的抽象类(我无法访问的Android类)。
抽象类重写视图
@Override
protected final void onDraw(Canvas canvas) {
if(conditions) return;
// child classes should only draw if this class gives the ok
subDraw(canvas);
}
protected abstract void subDraw(Canvas canvas);
但是我在这里添加了最后一个关键字。
关键是,我创建了一个抽象方法,子类应该使用而不是onDraw。所以我阻止onDraw被任何进一步覆盖,它可以工作。
我知道有一些设计可以让它变得更好,但是它的设计就像一个没有太多变化的魅力。如果做上述操作在运行时或其他问题上有不良副作用,我的问题更为一般吗?!
答案 0 :(得分:2)
是的,从技术上讲,它是一个干净的解决方案。如果您完全确定没有人可能想要更改此特定方法中的任何逻辑,您可以这样做。
此外,您必须记住,此方法必须包含尽可能少的逻辑,因为它不能被任何后代更改。如果您认为此方法的大小会增加(不使用委托),请避免最终确定。