大B:“講了這麼多,你現(xiàn)在能說說觀察者模式的使用情況嗎?”
小A:“1、當(dāng)一個抽象模型有兩個方面,其中一個方面依賴於另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和複用。2、當(dāng)對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。3、當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰?!?
大B:“換言之,你不希望這些對象是緊密耦合的。其實觀察者模式同前面講過的橋樑有著共同的使用環(huán)境:將變化獨立封裝起來,以達(dá)到最大的重用和解耦。觀察者與橋樑不同的地方在於,觀察者模式中的目標(biāo)和觀察者的變化不是獨立的,而是有著某些聯(lián)繫?!?