信管网cnitpm610258705***: [回复] c1:snsgroup c2:snsuser c3:snsadmin
观察者模式
观察者模式:对象中存在一对多的关系,一个对象更新依赖他的对象都会随之更新
根据需求可以发现中间存在一个级联关系,由于需求当中说到a加入b之后,自动成为b的成员,单并没有说明b也可以同时成为
a的成员,所以此时可以看做b的子组织包括了a成员。同时一个群可以添加多个群作为子群,所以这个childs是一个链表结构
设计如下
需要在snsgroup增加addgroup()方法与链表childgroupnodes 属性
snsgroup可以通过addgroup其他组并将它们当做其组的子成员变量
在通过notify时不仅需要查自身的组成员,还需递归查询子群的成员以及孙成员以此向下查
并发起通知
信管网cnitpm633797129***: [回复] 问题1:
1:group,2:user,3:admin
问题2:
观察者模式,
信管网山里人就***: [回复] 问题1:
c1 snsgroup; c2 snsuser; c3 snsadmin;
问题2:
图3-1中采用了观察者模式。
观察者模式一般适用于当一个对象的状态发生变化时,有多个对象需要根据变化做出反应的情况。
问题3:
在snsobserver类中增加一个list集合,用来存放添加的群体成员,并增加集合的set、get方法
信管网cnitpm630501712***: [回复] 【问题1】
c1: snsgroup,c2: snsuser,c3: snsadmin
【问题2】
观察者模式,这里使用该模式的意图是为了在群组的主页上发布或者更新信息,群组的成员能够自动接收到发布或更新后的信息,该模式适用于当一个实体的状态发生改变时,所有依赖该实体的其他实体能够自动收到通知。
【问题3】
snssubject类中增加一个addsnsgroup()方法,用来接收其他想加入的群体。
信管网克己复礼a***: [回复] 问题1 c1 snsgroup c2 snsuser c3 snsadmin
问题2 组合模式 接口和实现分离
问题3
信管网cnitpm548123883***: [回复] c1:snsgroup c2:snsuser c3:snsadmin
信管网cnitpm600760858***: [回复] c1 snsgroup c2 snsobserver c3 snsadmin
观察者模式
a群体观察者继承snsobserver
信管网cnitpm493877469***: [回复] c1:snsgroup c2:snsuser c3:snsadmin
观察者 在被观察的对象做出改变时可以通知其他观察对象 snsgroup里多一个snsgroup的属性
信管网cnitpm_wan***: [回复] c1:snsgroup c2:snsuser c3:snsadmin
state
信管网cnitpm475547856***: [回复] snsadmin snsuser snsgroup
观察者,当一个目标subject更新状态时,多个进行联系的观察者会接收并通知更新,适用于
|