gpt4 book ai didi

oop - 符合 Liskov 的状态设计模式

转载 作者:行者123 更新时间:2023-12-03 04:04:39 26 4
gpt4 key购买 nike

我正在设计一个订单系统,状态设计模式似乎很合适,因为订单可以更改其状态,从而更改订单允许的功能。下面是我的基本类图:

我不喜欢这种方法,因为客户端无法查看某个方法是否受支持并且违反了里氏原则。我在下面创建了一个替代方案:

我更喜欢这个,但客户端仍然必须检查是否支持某种方法。但他们仍然可以调用不受支持的方法并获得异常。这是否仍然违反里氏原则?

是否有更好的设计,既符合 Liskov 标准,又能防止用户在特定状态下调用无效方法?

最佳答案

您显示的不是状态模式。当对象的内部状态发生变化时,状态模式会改变对象的行为。例如,当您切换灯开关时,它可以打开或关闭灯,具体取决于其状态(同一方法的不同行为)。

通过这个 Order 接口(interface)(4 个 diff 方法),我没有看到引入 State 模式的任何好处。它只会无缘无故地让事情变得复杂。但我不知道所有细节,所以下一步该怎么做取决于你。

检查此链接以查看状态模式实现的示例 https://sourcemaking.com/design_patterns/state

关于oop - 符合 Liskov 的状态设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082090/

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