hqt*_*hqt 2 model-view-controller design-patterns strategy-pattern design-principles
这是定义Strategy Pattern:
策略 - 定义一系列算法,封装每个算法,并使它们可互换.策略允许算法独立于使用它的客户端.
因此,策略将功能分为两部分:一部分不改变,另一部分可以在未来某个时间改变.
而且,在MVC中,他们说:
控制器是视图的策略
这意味着控制器是变化的,View将来可能不会改变.
我还不太了解.我想他们两个都可以在未来改变.
请解释一下为什么人们这么说.
我怀疑你可能已经在模型视图控制器作为聚合设计模式的C3维基部分看到了"控制器是视图的策略" ,这很有趣,但有点简洁.
在设计模式的介绍中更详细地描述了这个想法,其中关于MVC的部分说:
MVC还允许您更改视图响应用户输入的方式,而无需更改其可视化表示.例如,您可能想要更改它响应键盘的方式,或者让它使用弹出菜单而不是命令键.MVC将响应机制封装在Controller对象中.控制器有一个类层次结构,可以很容易地创建一个新控制器作为现有控制器的变体.
视图使用Controller子类的实例来实现特定的响应策略; 要实现不同的策略,只需用不同类型的控制器替换实例.甚至可以在运行时更改视图的控制器,以使视图更改其响应用户输入的方式.例如,可以禁用视图,使其仅通过为其提供忽略输入事件的控制器来接受输入.
视图 - 控制器关系是策略设计模式的一个示例.策略是表示算法的对象.当您想要静态或动态替换算法时,当您拥有大量算法变体时,或者算法具有您想要封装的复杂数据结构时,它非常有用.
总结这一点,你可以使用不同的控制器相同的看法,以在系统的不同部分不同的行为,可以取代在运行时的控制器来启用或禁用特定功能,控制器封装更新的复杂的相互作用该模型.