Jav*_*per 4 java oop inheritance design-patterns
假设我们有一个类Animal,子类为cat,eagle
现在我有一个方法:
public void process(Animal animal) {
if (animal instanceof Cat) {
if (!animal.meow()) {
throw exception("cat does not meow");
} else {
animal.feedFish();
}
}
if (animal instanceof eagle) {
if (!animal.fly()) {
throw exception("eagle does not fly");
} else {
animal.checkMaxFlightAltitude();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里的猫有2种方法meow和feedfish这比鹰的方法完全不同fly,并checkmaxflight
大多数设计模式都围绕着假设,即子类有一个常见的方法,比如draw()由circle draw和square 继承的Shapedraw
有没有办法对子类进行验证,例如没有instanceof检查的猫和老鹰?
任何好的设计模式(假设子类不共享基类中的方法?)
您可以在子类中使用抽象process方法Animal并实现它:
class Animal {
protected abstract void process();
public static void process(Animal a) { a.process(); }
}
class Cat {
void process() {
if (!meow()) throw exception("cat does not meow");
else feedFish();
}
public boolean meow() { ... }
public void feedFish() { ... }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |