【发布时间】:2015-02-23 08:22:59
【问题描述】:
我对@987654321@ 进退两难。 Receiver 是一个知道如何执行操作的类的接口。
在链接中给出的示例中,接收器类Stock Trade 知道如何执行两个操作,StockTrade#buy 和StockTrade#sell。这些操作对应于 2 个现有命令,BuyStockOrder 和 SellStockOrder。
但是,如果需要添加其他命令,例如FooStockOrder 和BarStockOrder,该怎么办?然后,Receiver 接口必须更改(以及所有现有实现),因此违反了开闭原则。
如何以Receiver(几乎)从未改变的方式解决这个问题?
【问题讨论】:
-
不完全是,因为在提供的示例中,没有实际的 Receiver 类,它应该负责实际执行与命令对应的操作。
标签: oop design-patterns command-pattern open-closed-principle