策略模式的UML类图

策略模式的UML类图,uml,class-diagram,strategy-pattern,Uml,Class Diagram,Strategy Pattern,几小时后我要参加一次考试,我正在试着为它解答样题。我找不到以下问题的答案 根据以下情况绘制一个类图: 杂货店(如超市)出售商品。有两种食物:可食用的 (即,任何可用作食物的物品)和非食用物品。有些商品是按重量出售的, 有些是按单位出售的。有些项目应纳税,而其他项目则不应纳税。一些项目 分组销售时有特殊价格(例如,2美元3美元)。一次购买可能包含许多内容 项目 在类图中,仅显示类/抽象类/接口、关联、, 以及协会的多样性。不要包含任何操作!清楚表明 设计中的接口和抽象类(如果有) 此外,您的设计应

几小时后我要参加一次考试,我正在试着为它解答样题。我找不到以下问题的答案

根据以下情况绘制一个类图:

杂货店(如超市)出售商品。有两种食物:可食用的 (即,任何可用作食物的物品)和非食用物品。有些商品是按重量出售的, 有些是按单位出售的。有些项目应纳税,而其他项目则不应纳税。一些项目 分组销售时有特殊价格(例如,2美元3美元)。一次购买可能包含许多内容 项目

在类图中,仅显示类/抽象类/接口、关联、, 以及协会的多样性。不要包含任何操作!清楚表明 设计中的接口和抽象类(如果有)

此外,您的设计应该是 尽可能灵活。特别是,你需要 注意以下几点:

1) 一件物品可以食用,也可以不食用,并且这一事实在其生命周期内不会改变 项目,而定价策略可能会在项目的生命周期内发生变化

2) 每个定价策略都与一组特定的操作相关联。例如 对于征税策略,无论项目是否应纳税,我们都可能有一个操作 计算税款的(然后,对于非应税项目,此函数可以返回0)

3) 尽管定价策略的操作集保持不变,但是 所处理的操作可能会随时间而变化。例如,我们计算的方式 随着时间的推移,食用和非食用物品的税收可能会有所不同

4) 尽管定价策略的操作集在不同的市场中保持不变 对于不同的项目,我们可能希望以不同的方式实现这些操作 项目。例如,我们可能希望以不同的方式计算橙子和苹果的税收 苹果

我尝试过这样的想法,认为它可以适合战略设计模式,但我一点也不确定


首先有一家商店,可以是杂货店。任何商店都有两种类型的对象:物品和购物。如果没有商品和/或购买,商店将停止存在。物品将在没有商店的情况下存在(例如,它们必须被送到商店),但购买的物品属于商店本身。这就是为什么商店和商品之间存在聚合关系,而商店和购买之间存在组合关系

物品有一些特征,如名称、食用、应纳税、重量和单位。我并没有实现一个项目的所有特性,但想法是存在的。出售这些物品的方法有很多。同时可能会使用更多的策略。针对这种情况,设计了装饰图案。它可以在运行时动态添加多个策略。 它装饰了item-interface,因为它与item关联,因为销售方式的改变会在item中找到原因。它与类购买有关联,但它不是购买的一部分。将要出售的每件商品都属于特定的购买。它还可以使该州尚未出售。这就是为什么购买的多重性是0-1。总而言之,这可以归结为:


这个问题对您是否仍然有意义,或者您是否可以结束这个问题?我想很多人在看这个问题的时候都会问,你需要一个答案吗?向你们提出这个问题并不意味着我会回答这个问题。我的主要动机是另一个好奇:你的考试怎么样?没那么糟糕,我得了80分/100分。对于这个问题,实际上我仍然不知道确切的答案。祝贺你的考试!如果你仍然想要一个答案,那么你可以改变这个问题。这可能会有帮助。sellItem和Item之间有抽象吗?是的,Decorator模式的要点是sellItem仍然可以作为Item接口调用,但是Item接口作为成员,并且返回Item价格的函数将返回装饰过的Item变量。它同时继承并包含该项。看看维基百科中的这个图表:。我没有在图中包含包含关系,但是我包含了变量item:item,它以更简洁的方式描述了相同的原理。