我是设计模式的新手,现在我正在学习工厂方法模式。我试着用动物做一个例子。
我有一个带有两个方法的Animal接口,呼吸和行走。实现这个接口我有两个类,Giraffe和Flamingo。
遵循这个模式,我有两个工厂,一个用于长颈鹿,另一个用于Flamingos,还有一个主类如下所示:
if (color.equals("yellow")) {
  factory = new GiraffeFactory();
} else {
  factory = new FlamingoFactory();
}
Animal animal = factory.createAnimal();
animal.breathe();
animal.walk();这很好用,但现在我意识到火烈鸟可以飞了。我不想在Animal接口中包含这个方法,因为长颈鹿不能。
我如何只在Flamingo Animal实例中调用这个新方法?cast是唯一的解决方案吗?或者,此模式仅适用于具有来自其接口的相同方法的对象?
((Flamingo) animal).fly();非常感谢。
发布于 2021-01-13 13:38:08
https://stackoverflow.com/questions/50447383
复制相似问题