刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题二(25分)

阅读以下关于面向对象系统建模的叙述,回答问题。

【说明】

某软件企业为车载产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求:

W公司经常进行促销活动。根据不同的条件(如车型、配饰种类、商品数量、产品种类等),公司可以提供百分比折扣或现金减免等多种促销方式供提交订单的用户选择。实现每种促销活动的代码量很大,且会随促销策略不同经常修改。系统设计中需要考虑现有的促销和新的促销,而不用经常地重写控制器类代码。

该在线销售系统需要计算每个订单的税率,不同商品的税率及计算方式会有所区别。所以W公司决定在系统中直接调用不同商品供应商提供的税率计算类,但每个供应商的类提供了不同的调用方法。系统设计中需要考虑如果公司更换了供应商,应该尽可能少地在系统中修改或创建新类。

项目组架构师决定采用设计模式来满足上述设计要求,并确定从当前已经熟练掌握的设计模式中进行选择,这些设计模式包括:适配器模式(Adapter)、构造器模式(Builder)、命令模式(Command)、外观模式(Facade)、中介模式(Mediator)、原型模式(Prototype)、代理模式(Proxy)、状态模式(State)和策略模式(Strategy)等。

针对题目中的设计要求,请阐述在设计在线销售系统时,针对促销活动和税率计算应如何选择设计模式,并给出具体的解决方案。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)策略模式

解决方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用于根据订单编号计算将要折扣的金额总数。计算每个促销的内部代码对促销类来说完全不同。

(2)适配器模式

解决方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变。

解析:

(1)对于第一个设计要求,由于存在多种促销方式且经常变动,因此需要一个灵活的方式来处理这些促销活动。策略模式是一种很好的选择。在这种模式下,我们可以为每个促销方式创建一个策略类,这些类实现一个共同的接口或继承自一个共同的基类。这样,我们可以根据不同的条件动态选择适当的策略,而无需修改控制器类的代码。这符合题目中的要求,使得代码更加灵活且易于维护。

(2)对于第二个设计要求,我们需要将不同供应商的税率计算类集成到系统中,而每个供应商的类提供了不同的调用方法。这时,适配器模式是一个理想的选择。通过编写适配器类,我们可以将系统的调用转换为供应商期望的接口,从而实现对不同供应商税率的支持。如果更换了供应商,只需要修改适配器类以适应新的供应商接口,而无需修改其他部分的代码。这样,系统就具有了更好的灵活性和可扩展性。

创作类型:
原创

本文链接:针对题目中的设计要求,请阐述在设计在线销售系统时,针对促销活动和税率计算应如何选择设计模式,并给出具

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share