本章我们粗略地讲解了一个MVC框架。一个MVC框架要考虑的外界环境因素太多了,而且本身MVC框架也是一个轻量型的,就是希望我们编写的程序在没有Struts、Spring MVC等框架的环境中不需要大规模的修改照样能够运行,所以编写一个框架不是一件容易的事情。幸运的是我们以学习模式为主,通过设计MVC框架来了解设计模式。我们来看看本章用到了哪些模式。
● 工厂方法模式:通过工厂方法模式把所有的拦截器链实现出来,方便在系统初始化时直接处理。
● 单例模式:Action的默认配置都是单例模式,在一般的应用中单例已经足够了,在复杂情况下可以使用享元模式提供应用性能,减少单例模式的性能隐患。
● 责任链模式:建立拦截器链以及过滤器链,实现任务的链条化处理。
● 迭代器模式:非常方便地遍历拦截器链内的拦截器,而不用再自己写遍历拦截器链的方法。
● 中介者模式:以核心控制器为核心,其他同事类都负责为核心控制器“打工”,保证核心控制器瘦小、稳定。
● 观察者模式:配置文件修改时,不用重启应用可以即刻生效,提供使用者的体验。
● 桥梁模式:使不同的视图配合不同的语言文件,为终端用户展示不同的界面。
● 策略模式:对XML文件的检查可以使用两种不同的策略,而且可以在测试机和开发机中使用不同的检查策略,方便系统间自由切换。
● 访问者模式:在解析XML文件时,使用访问者非常方便地访问到需要的对象。
● 适配器模式:把一个开发者不熟悉的对象转换为熟悉的对象,避免工具或框架对开发者的影响。
● 门面模式:Action分发器负责所有的Action的分发工作,它提供了一个调用Action的唯一入口,避免外部模块深入到模型模块内部。
● 代理模式:大量使用动态代理,确保了框架的智能化。
MVC框架有非常成熟的源码,有兴趣的读者可以看看Struts、Spring MVC等源码,其中包含了非常多的设计模式。读源码是提高设计技能和开发技能的一个重要途径,看一本书是与作者进行了一次心灵交互,看一份源码是与一群作者进行心灵交互,对提高自己的技术修养有非常大的帮助。