首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下关于面向对象系统建模的叙述,回答下列问题。 【说明】 某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求: (1)w公司经常
阅读以下关于面向对象系统建模的叙述,回答下列问题。 【说明】 某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求: (1)w公司经常
admin
2013-01-20
33
问题
阅读以下关于面向对象系统建模的叙述,回答下列问题。
【说明】
某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求:
(1)w公司经常进行促销活动。根据不同的条件(如订单总额、商品数量、产品种类等),公司可以提供百分比折扣或现金减免等多种促销方式供提交订单的用户选择。实现每种促销活动的代码量很大,且会随促销策略不同经常修改。系统设计中需要考虑现有的促销和新的促销。而不用经常地重写控制器类代码。
(2)该在线销售系统需要计算每个订单的税率,不同商品的税率及计算方式会有所区别。所以W公司决定在系统中直接调用不同商品供应商提供的税率计算类,但每个供应商的类提供了不同的调用方法。系统设计中需要考虑如果公司更换了供应商,应该尽可能少地在系统中修改或创建新类。
项目组架构师决定采用设计模式来满足上述设计要求,并确定从当前已经熟练掌握的设计模式中进行选择,这些设计模式包括:适配器模式(Adapter)、构造器模式(Builder)、命令模式(Command)、外观模式(Facade)、中介模式(Mediator)、原型模式(Prototype)、代理模式(Proxy)、状态模式(State)和策略模式(Strategy)等。
针对题目中所提出的设计要求(1)和(2),项目组应该分别选择何种设计模式?请分别用200字以内文字说明具体的解决方案。
选项
答案
(1)策略模式 解决方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用于根据订单编号计算将要折扣的金额总数。计算每个促销的内部代码对促销类来说完全不同(3分)。 (2)适配器模式 解决方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变。
解析
设计要求(1)中不同的促销方法有不同的实现代码,在不同促销活动中需要能够替换实现代码,适合采用策略模式。策略模式是一种对象的行为型模式,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,其目的是将行为和环境分隔,当出现新的行为时,只需要实现新的行为型模式。
设计要求(2)中不同商品供应商提供的税率计算类需要提供统一的方法调用接口,适合采用适配器模式。适配器模式将一个接口转换成客户希望的另一个接口,从而使接口不兼容的那些类可以一起工作。适配器模式既可以作为类结构型模式,可以作为对象结构型模式。在类结构型模式中,通过使用一个具体类将适配者适配到目标接口中;在对象适配器模式中,一个适配器可以将多个不同的适配者适配到同一个目标。
转载请注明原文地址:https://jikaoti.com/ti/GE67FFFM
本试题收录于:
系统架构师下午案例分析考试题库软考高级分类
0
系统架构师下午案例分析考试
软考高级
相关试题推荐
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,
将一整数逆序后放入一数组中(要求递归实现)
四个工人,四个任务,每个人做不同的任务需要的时间不同,求任务分配的最优方案。(2005年5月29日全国计算机软件资格水平考试——软件设计师的算法题)。
在一个ASPX文件中是否可以使用一种以上的语言?
什么是ASP.net中的用户控件
类CMyString的声明如下:classCMyString{public:CMyString(char*pData=NULL);CMyString(constCMyString&str);~CMyString(void);
下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。templateclassArray{public:Array(unsignedarraySize):data(0),size(arraySize)
在用户管理组administrators中添加本地用户“sy”。
设置本地连启动WindowsXP系统自带防火墙。
设置TCP/IP属性筛选TCP/IP不允许UDP端口的数据通过。
随机试题
下述哪一项疾病一般不会导致全血细胞减少
发病率的计算方式中,分子的内容是
胸部损伤后出现颈静脉怒张、奇脉、血压下降、脉压变小,此时首先应想到
甲是北京市某社区的居民,住在社区的A楼第十层。下列关于甲所享有的建筑物区分所有权的说法正确的是()。
关于侵犯财产罪及相关犯罪,下列哪一选项是正确的?()(2007/2/17)
下列企业既是增值税纳税人又是资源税纳税人的是()。
根据巴塞尔协议,下面不属于附属资本的是()。
PreciousAirlinesFrequentFlierProgramPreciousAirlinesisproudtopresentourworldwidefrequent
Thegirlwasso______bythemightyriverthatshewouldspendhourssittingonitsbankandgazingattheboatsandraftsgoing
ThegreatdividinglinebetweenthenineteenthcenturyandthecontemporaryAmericanLiteratureis______.
最新回复
(
0
)