gpt4 book ai didi

java - 如何在 Java 中扩展工厂方法模式中的类

转载 作者:行者123 更新时间:2023-12-02 11:13:27 26 4
gpt4 key购买 nike

我是设计模式的新手,现在我正在学习工厂方法模式。我尝试用动物做一个例子。

我有一个动物界面,有两种方法:呼吸和行走。实现这个接口(interface)我有两个类,Giraffe 和 Flamingo。

按照这个模式,我有两个工厂,一个用于长颈鹿,一个用于火烈鸟,还有一个像这样的主类:

if (color.equals("yellow")) {
factory = new GiraffeFactory();
} else {
factory = new FlamingoFactory();
}

Animal animal = factory.createAnimal();
animal.breathe();
animal.walk();

这很完美,但现在我意识到火烈鸟可以飞。我不想在动物接口(interface)中包含此方法,因为长颈鹿不能。

如何才能仅在 Flamingo Animal 实例中调用这个新方法?强制转换是唯一的解决方案吗?或者这种模式仅适用于接口(interface)中具有相同方法的对象?

((Flamingo) animal).fly();

非常感谢。

最佳答案

嗯,这种模式的使用没有多大意义,重点是你不知道你会得到什么 Animal 的实现(责任分离),所以使用知识。你可以创建一个新的接口(interface) Winged 之类的,然后让 Flamingo 实现它。然后你就可以随时检查。请记住, bat 在想到名字时也会飞;)

if (animal instanceof Winged) {
Winged winged = (Winged) animal;
winged.fly();
}

关于java - 如何在 Java 中扩展工厂方法模式中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50447383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com