【发布时间】:2015-08-18 01:48:05
【问题描述】:
我一直在为一个问题摸不着头脑,但我仍然不知道什么是最好的解决方案。由于应用程序领域非常技术性,我将通过一个简单的示例来说明我的问题。
假设我有以下接口:
public interface Animal {
public void feed(AnimalFood food);
}
public interface AnimalFood {
// some methods
}
以及以下两个实现接口的类:
public class DogFood implements AnimalFood {
// some methods
}
public class CatFood implements AnimalFood {
// some methods
}
public class Dog implements Animal {
public void feed(AnimalFood food){
// can only eat dog food
}
}
public class Cat implements Animal {
public void feed(AnimalFood food){
// can only eat cat food
}
}
这意味着每次我提供 Dog 或 Cat 实例时,我都必须验证接收到的 DogFood 或 CatFood 实例,如果这不是正确的类型,则抛出异常食物。
这对我来说很难闻,而且我很肯定违反了 Liskov 替换原则!
是否有设计模式,或者有什么优雅的方式来管理这种情况?
【问题讨论】:
-
见stackoverflow.com/questions/30450793/…这种OO问题太频繁了。值得庆幸的是,Eric 在他的系列文章中做得很好。
标签: oop design-patterns architecture solid-principles