案例分析题

【说明】
社交网络平台 (SNS) 的主要功能之一是建立在线群组,群组中的成员之间可以互相分享或挖掘兴趣和活动。每个群组包含标题、管理员以及成员列表等信息。
社交网络平台的用户可以自行选择加入某个群组。每个群组拥有一个主页,群组内的所有成员都可以查看主页上的内容。如果在群组的主页上发布或更新了信息,群组中的成员会自动接收到发布或更新后的信息。
用户可以加入一个群组也可以退出这个群组。用户退出群组后,不会再接收到该群组发布或更新的任何信息。
现采用面向对象方法对上述需求进行分析与设计,得到如表3-1所示的类列表和如图3-1所示的类图。

问答题

根据说明中的描述,给出图3-1 中Cl C3所对应的类名。

【正确答案】

C1: SNSGroup
C2:SNSUser
C3:SNSAdmin
(其中 C2、 C3 可以互换)

【答案解析】
问答题

图3-1中采用了哪一种设计模式?说明该模式的意图及其适用场合。

【正确答案】

采用的观察者模式。
意图:当被观察(群组主页) 发生改变时, 可以通知所有的观察者(群组内的所有成员)。
使用场合: 观察者模式多用于实现订阅功能的场景, 例如微博的订阅。 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并自动更新。
观察者模式(Observer)定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象酬导到通知并被自动更新。

【答案解析】
问答题

现在对上述社交网络平台提出了新的需求:一个群体可以作为另外一个群体中的成员,例如群体A 加入群体B 。那么,群体A 中的所有成员就自动成为群体B中的成员。
若要实现这个新需求,需要对图3-1进行哪些修改? (以文字方式描述)

【正确答案】

新增一个被观察者对象群组 B 的主页, 对于观察者, 新增一个“加入群组 B” 的方法, 加入之后, 就可以接收被观察者群组 B 的主页变动所发生的通知。

【答案解析】