【发布时间】:2019-12-17 21:24:51
【问题描述】:
我遇到了一个要求创建单个对象的问题,在这个例子中,a 每次我运行 eat 方法时,它都会打印出 apple,banana同行,按顺序,然后循环回苹果。
我很确定我需要创建 3 个类 class apple class banana class peer,每个都继承 class Order 并且每个都有一个方法 eat()。
不使用 Java 基本类型、循环、if 语句,只使用面向对象的特性,我怎样才能使这段代码成为可能?
Order a = new Order();
//a will change state after each method is called.
a.eat(); // Prints "ate apple"
a.eat(); // Prints "ate banana"
a.eat(); // Prints "ate peer"
a.eat(); // Prints "ate apple"
a.eat(); // Prints "ate banana"
a.eat(); // Prints "ate peer"
【问题讨论】:
-
如果你只是创建一个对象,每次调用一个方法时它的行为都会改变,这与多态性没有任何关系,多态性是关于类如何从其他类型继承行为。
-
baeldung.com/java-state-design-pattern 状态设计模式但仍需要 3 个额外的类?
-
@Evgeniy 不需要额外的 3 个课程。我认为应该使用它,但可能是错误的。
-
@Michael 为什么这可能是错误的?通过创建一个额外的对象,您将使用多态性,它是面向 OOP 的。如果你想通过额外的水果来扩展它,这很容易做到。 + 您希望在 Order NP 中拥有整个逻辑,然后使用状态来改变行为
标签: java oop inheritance polymorphism