摘要:
装饰者模式就好比一个个wrapper(包装器),将一个对象一层层的包装,然后返回包装后的对象,就好比你在网上购买了一个电饭锅,那么这个电饭锅就是最原始的对象,而商家可能会在发货时进行一个初步包装,首先将电饭锅用一层泡沫包起来,然后装入一个纸箱,接着交给快递公司,然后快递公司收到这个物品后,还要进行二次包装,即使用快递公司专门的盒子装起来(或者用麻袋装好),然后贴上胶布开始运输,客户收到的这个箱子自后,一层层解开包装,最后拿出电饭锅。那么所有包装这个电饭锅的东西,像泡沫啊,纸箱啊,盒子啊,胶布啊,都可以算作装饰者,装饰者将原来的对象装饰完之后,会生成一个装饰后的对象,使源对象加上各种装饰品。所以,既然装饰者依赖于被装饰的对象,那么,装饰者在实现时就理所当然需要一个被装饰的对象的引用了,然后装饰完之后该引用就会指向装饰后的对象了。 阅读全文
摘要:
观察者模式首先定义了一个被观察者,然后让很多的观察者订阅被观察者,而被观察者在自己的状态有了更新时向所有的观察者“推送”自己的状态信息,从而使所有的观察者都得到通知。其实这个模式让人很容易想到当前一种最为潮流的互联网应用:微博。就拿微博为例,每一个人都可以是观察者与被观察者两种身份,当你关注别人的时候,比如你的一个朋友小罗,你就成为了小罗的粉丝,就相当于此时小罗为被观察者,而你自己是观察者身份,你订阅了被观察者,使被观察者在自己状态发生改变时会及时通知你。比如小罗今天去旅游,他将照片发到了微博上,这样你就能及时的看到他的动态了。而且不只是你,他所有的粉丝都能看到他的动态了。而当你的另外一个朋友,比如小杨关注了你,这样你就成为了被观察者,而小杨就是观察者,当你在微博上的个人中心上发状态时,小杨就能实时看到你的状态了,或者会对你的状态进行评论。所以,Observer模式很容易理解。 阅读全文