假设我们有一只老虎站在田野上寻找猎物。当老虎开始捕猎时,他问田野目前站在那里的是什么。在那之后,老虎开始一个接一个地吃掉它们。如果它吃了一只土狼,它就会咬它一口,然后老虎就会放了那只土狼。如果老虎一次捕猎两只以上的土狼,它就会被它们咬死。如果老虎吃了一只羚羊,它就死定了。
我创建了一个序列,但据我所知,它违反了OOP原则。我应该改变什么来实现这些原则?土狼对没有老虎的进食方式的反应如何让土狼知道这一点呢?

发布于 2020-12-13 04:00:02
事实上:老虎不能让土狼咬它,也不能由土狼决定让它走。老虎甚至不应该知道土狼的内部结构(principle of the least knowledge)。
您需要将这两个类解耦。第一步是隐藏内部,将猎人和猎物抽象为更一般的生物。
下一步可能是将一个领域中涉及的生物之间交互的责任转移到一个,它将负责交流的编排,只使用老虎和土狼专门研究的生物的已知接口。
https://stackoverflow.com/questions/65268619
复制相似问题