针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能…
简答题
针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能;王工则建议采用解释器(interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。
答案:面向对象风格:将折扣规则和筛选逻辑封装为对象,修改规则需修改代码并重新编译,可修改性较差;灵活性较低,但性能较好。解释器风格:规则以数据形式存在,修改规则无需修改代码,可修改性好;灵活性高,但性能较差。系统需求强调灵活设置折扣规则和促销活动,且用户规模不大,性能要求不高,因此更适合采用解释器风格。
解析
要点参考答案
- 面向对象:规则封装为对象,修改需改代码并重新编译,可修改性差、灵活性低,但直接调用性能好。
- 解释器:规则以数据或表达式独立存放,修改无需改代码,可修改性、灵活性好,但解释执行性能较差。
- 系统强调灵活设置折扣与促销,用户规模不大、性能要求不高,因此更适合解释器风格。
得分点解析
- 可修改性:解释器规则外置,适应折扣规则频繁调整;若选错会增加维护成本。
- 灵活性:解释器易组合条件,支持个性化折扣定义;面向对象易导致类膨胀。
- 性能:面向对象直接调用无解析开销;解释器有解析成本,但本题非高并发场景。
- 选型:需求弹性优先于性能,故解释器更匹配。
延伸
若规则稳定且高并发,可选面向对象或编译优化后的规则引擎;解释器也可缓存解析结果提升性能。