android 开发之6/365 观察者、模板方法、装饰者模式

来源:互联网 发布:java oa系统源码 编辑:程序博客网 时间:2024/06/13 21:54

连续看了一段时间的设计模式,说实话,有点看吐的感觉。今天利用最后一点空闲时间看了观察者模式,模板方法模式,装饰者模式是昨晚看的。

前面画的图都是丑丑的,于是问了前辈用什么软件画图比较好,他介绍给我Visio,Visio是微软提供的一款非常方便的画图工具。不过还没有研究过能不能画UML图。貌似UML图才是作为程序猿应该画的图。大家百度下用Visio画UML图,百度里有介绍的。

介绍下昨晚到今天目前未知的学习成果:


观察者模式:



上面就是用visio画的图,再也不用担心箭头丑丑的。上面介绍了两个观察者的模式,在这里我更推荐自定义的观察者模式,主要是因为工作到现在,从来没有遇到过使用系统Observable的代码。另外自定义的方式有利于加深对该设计模式的理解。当然,这个模式的主要思路就是一个“事件订阅” 。和广播有点类似。在安卓编程中多线程更新UI经常要用到这个方法,所以需要着重掌握。整理一下思路,在Publisher 里面register了Observer 对象,然后再Notify方法中调用Observer.update方法,,并传入一个对象过去。这样就起到了发布通知的功能。


模板方法模式:


模板方法模式很直观:就一句话总结,抽象类里面有N个方法,继承类去重写这些方法,最后去调用methodTotal();以一个固定的顺序去实现这个方法。


装饰者模式:主要流程: 所有类都直接或间接继承于主产品:eg:boy 。 boy中有各种特性,并有一个主方法f () 显示这些特性。

                                          主decorator继承boy,并写了f()的一个抽象方法用于被继承重写。

                                           decorator1继承主decorator,可以添加新特性,,但是最后都要在主方法f()中调用来显示。 

                       主要特性: 每个原始类,可以经过n个decorator1进行包装,也就是dcorator的特性可以叠加赋值给原始类。



上面所有的类都继承于产品A。   都可以用产品A表示。 产品A用decorator1包装后,就有了dec1的特性,以此类推。


0 0
原创粉丝点击