在某系统中,不同组(GROUP)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维护,得到如下所示的类图。

该设计采用()模式,用一个对象来封装系列的对象交互;使用户对象和组对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式属于()模式,该模式适用 ()。

问题1
A.状态(State)
B.策略(Strategy)
C.解释器(Interpreter)
D.中介者(Mediator)
问题2
A.创建型类
B.创建型对象
C.行为型对象
D.行为型类
问题3
A.需要使用一个算法的不同变体
B.有一个语言需要解释执行,并且可将句子表示为一个抽象语法树
C.一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为
D.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解
请先 登录 后评论

1 个回答

亚里士德
擅长:互联网

知识点:设计模式

2019就考过中介者。2021年又考了。

简单说就是,用户对组是一对多,组对用户也是一对多。所以就是个多对多的,要用个中间模式来搞个映射好维护。中间搞个东西来维护不就是中介者模式吗。


问题1:

A选项:状态模式的原文描述:“允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。”,可以顾名思义。(行为型)

B选项:原文:“定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化。”。(同上)

C选项:原文:“给定一个语言,定义它的文法的一种表示,xxx”。(同上)

D选项:选项后面就是原文。(同上)


问题2:行为型设计模式是三大设计模式分类中最多的,里面有:除了选项中的这几个,还有责任链、访问者、观察者、迭代器、命令、模板方法、备忘录。


问题3:A就是策略,B是解释器,C是状态,D就是题目中这种情况。  详细可以看看 https://www.z21.org/article/3


请先 登录 后评论