本帖最后由 Littlekin 于 2014-12-10 22:46 编辑
对于这个问题,GoF (Gang of Four,四人组, 《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite)。根据MVC在框架中的实现不同可能还会用到工厂模式(Factory)和装饰器(Decorator)模式。
所以,MVC模式是一种复合模式(复合设计模式为两种或两种以上设计模式结合在一起)。
MVC中的模型(MODEL)采用了观察者模式。也就是说,如果模型状态改变,对应的视图和控制器状态也会随之改变;MVC中的控制器(Controller)采用了策略模式,视图将行为委托给了控制器,并且可以动态的改变行为,也就是动态的更换控制器;MVC中的视图采用了组合模式,视图中的窗口、面板、按钮、标签等。这些组件有的是组合节点,有的是叶子节点,利用组合模式可以让这些节点采取统一的处理方式。
|