脑子不清的总结下看过的设计模式

观察者模式:http://cmsblogs.com/?p=3346编程

        概述:分为三个部分,主题:也叫被观察的对象,  具体主题:是主题的子类,一般封装着容易发生改变的数据,当他发生改变时就向观察者发送通知,  观察者  ,观察主题发生改变是作出反应  ,  具体观察者:指向一个具体的引用,里面主要是存储观察者有关的状态,这些状态须要与目标状态保持一致。一个主题能够有不少个观察者,属于一对多的关系,当主题发生改变时,观察者也会作出相应改变,而且观察者不依赖主题生存,能够随时增删观察者的数量,易于扩展(有点像消息中间件中的订阅模式)中间件

        优势:没有明显的耦合状态时仍能够相互交互,主题只知道观察者这个接口,而不知道观察者的具体内容    主题会向观察者发出广播通知,并具备开闭原则对象

        缺点:当观察者过多的时候,主题要通知全部的观察者的时候会花费太多的时间blog

                 当观察者与主题之间有循环关系是容易形成系统卡死继承

                 主题不能向观察者表达具体改变了什么,只能表达我发生了改变接口

装饰者模式:http://cmsblogs.com/?p=3349编译

        归纳:由于继承是静态的,在编译的时候都已经决定了子类的行为,咱们不便于控制时机,因此咱们就使用关联,这样就动态的把责任加到对象身上,装饰着模式就提供了更加有弹性的工做方案,装饰着能够在被装饰着后面增长本身的行为,甚至能够被装饰者取代从而达到特定的效果,固然这些装饰着也能够删掉不影响程序正常运行扩展

        优势:使被装饰者有更加丰富行为,比继承更灵活循环

        缺点:若是装饰着比较多的话就会增长系统的复杂程度,不易整理和;排错引用

简单工厂模式:http://cmsblogs.com/?p=3351

        归纳:比较符合Java面向对象的编程思想,传统编程一旦加入新的接口就要修改代码,如今咱们只须要调用一个简单的方法,而后传进去参数他就会返回相对应的对象(也就是说我建立一个类里面,里面封装须要增长或者修改的对象,我只须要传进去一个具体的参数他就经过这个参数找到具体的对象并返回)

        优势:简单工厂模式实现了责任的分割,提供了类经过特定的参数建立对象,提升灵活性,简化须要记忆的代码

        缺点:依赖性过高,一旦工厂类不能工做以后整个业务将会瘫痪

                  增长类的个数提升了代码的复杂性和理解难度

                  因为使用了简单工厂模式,不少对象方法都是静态的,不利于总体的继承

相关文章
相关标签/搜索