observerパターンの依存関係

http://objectclub.jp/technicaldoc/pattern/observer
http://gamehell.g.hatena.ne.jp/kenmo/20050715/p1
observerパターンは相互の依存加関係を、一方向の依存関係2つに分割している?
ovserverパターンが適用されていないこのコードを……、

class subject
	constructor(@num):->@list=[]
	add:(o)->@list.push o
	notify:->@list.forEach (o)->o.update(@)
	getNum->@num
	addNum:->
		@num++;
		@notify()
# ↓↑ お互い依存している
class observer
	constructor:(targetSubject)
		targetSubject.add @
	update(targetSubject):->
		console.log targetSubject.getNum()

ovserverパターンを適用すると、こうなる。

class subject
	constructor:->@list=[]
	add:(o)->@list.push o
	notify:->@list.forEach (o)->o.update(@)
# ↓ subjectはobserverに依存しているが、その逆は無い
class observer
	update:(target)->

class concreteSubject extends subject
	constructor(@num):->super()
	getNum->@num
	addNum:->
		@num++
		@notify()
# ↑ concreteObserverはconcreteSubjectに依存しているがその逆は無い
class concreteObserver extends observer
	constructor:(targetSubject)
		targetSubject.add @
	update(targetSubject)->
		console.log targetSubject.getNum()