知识卡片
用策略模式让XML校验算法按环境自由切换
内容
MVC框架启动校验Action配置有两种算法:普通XML语法校验(速度快)和框架逻辑校验 (反射初始化每个类,能提前发现配置错误但拖慢启动)。两者处理同一份文件、同一目的, 只是实现方式和代价不同,选谁应可插拔——正是策略模式场景。发散:测试机追求提前暴露 问题用逻辑校验,生产机追求启动速度只用语法校验;判断该用策略模式的信号不是”有多种 实现”,而是”需要按环境自由切换、切换成本趋近于零”。
参考来源
- 位置:《设计模式之禅(第2版)》第37章《MVC框架》37.1.1节(源文件:_epub-src/text/part0158.html)
- 结论依据:原文说明"这两种不同的算法是完全可以替换的,而且很有必要替换,逻辑检查在应用启动的时候需要对所有的类进行过滤处理,牺牲的是效率……在生产机上要花20分钟才能把一个应用启动起来,在分秒必争的业务系统中这是不允许的,因此就要求该算法可以退休,想用的时候(测试机环境)就用,不想用的时候(生产环境)就不用,想到什么模式了吗?策略模式"。
- 原始内容:这两种不同的算法是完全可以替换的,而且很有必要替换,逻辑检查在应用启动的时候需要对所有的类进行过滤处理,牺牲的是效率,这在测试机上没有问题,在生产机上要花20分钟才能把一个应用启动起来……因此就要求该算法可以退休,想用的时候(测试机环境)就用,不想用的时候(生产环境)就不用,想到什么模式了吗?策略模式。