某软件公司欲设计一款图像处理软件,帮助用户对拍摄照片进行后期处理。在软件需求分析阶段,公司系统分析师识别出了如下3个关键需求:(1)图像处理软件需要记录用户在处理照片时所有动作,并能够支持用户动作撤销与重做等行为。(2)图像处理软件需要根据当前正在处理照片不同特征选择合适处理操作,处理操作与照片特征之间具有较为复杂逻辑关系。(3)图像处理软件需要封装各种图像处理算法,用户能够根据需要灵活选择合适处理算法;软件还要支持高级用户根据一定规则添加自定义处理算法。在系统设计阶段,公司架构师决定采用设计模式满足上述关键需求中对系统灵活性与扩展性要求。具体来说,为了支持灵活撤销与重做等行为,采用( )最为合适;为了封装图像操作与照片特征之间复杂逻辑关系,采用( )最为合适;为了实现图像处理算法灵活选择与替换,采用(请作答此空)最为合适。
- A.模板方法模式
- B.访问者模式
- C.策略模式
- D.观察者模式
正确答案及解析
正确答案
C
解析
本题主要考查设计模式知识。题干描述了某软件公司一款图像处理软件需求分析与设计过程,并明确指出采用设计模式实现关键需求对系统灵活性与扩展性要求。针对需求1,为了支持灵活撤销与重做等行为,采用命令模式最为合适,因为命令模式可以将一个请求封装为一个对象,从而使你可用不同请求对客户进行参数化,还可以对请求排队,或记录请求日志,以及支持可撤销操作。针对需求2,为了封装图像操作与照片特征之间复杂逻辑关系,采用状态模式最为合适,因为状态模式将每一个条件分支放入一个独立类中,这样就可以根据对象自身情况将对象状态作为一个对象,这一对象可以不依赖于其他对象而独立变化;针对需求3,为了实现图像处理算法灵活选择与替换,采用策略模式最为合适,因为策略模式定义一系列算法,把它们封装起来,并且使它们可相互替换,使得算法可独立于使用它客户而变化。