第29章 OOTV杯超级模式大赛--模式总结

2016-03-09 14:30:55.0

面向对象的特性:封装、继承、多态、抽象。
编程原则:单一职责原则、开放-封闭原则、依赖倒转原则、里氏代换原则、合成聚合复用原则、迪米特法则。
面向对象的好处:可维护性,可扩展,可复用、灵活性好。
面向对象与面向过程
过程:把代码分割成多个模块,增强了代码的复用性,方便了调试和个性,但结构也相对复杂了。它把一条条业务流程交织组合在一起,划分成一个个功能模块,最终通过函数实现功能。但由于业务流程最容易变化,就需要更改函数。
对象:面向对象的开发,可以封闭变化的区域, 从而更容易地将代码与变化产生的影响隔离开来。对象比流程更稳定,也更加封闭。业务流程从表面上看只有一个入口一个出口,但实际上,流程的每一步都可能改变某个数据的内容、改变某个设备的状态,对外界产生影响。而对象则是完全通过接口与外界联系,接口内部的事情与外界无关。
设计模式:设计模式是面向对象技术的最新进展之一。由于面向对象设计的复杂性,设计模式有助于做出应对变化,提高复用的设计方案。
设计模式好处:通过复用已经公认的设计,能够在解决问题时避免前人所犯的种种错误。可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案。设计模式有助于提高我们的思考层次。让我们在更高的高度来俯视我们的设计。

简单工厂:Spring的Bean工厂。我们项目中的RPCFactory。

创建型模式:
模式
定义
作用
应用场景
保证一个类仅有一个实例,并提供一个访问它的全局访问点
对唯一的实例可以严格控制客户端怎样以及何时访问它
windows任务管理器;spring中IOC容器中的单例对象
定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个对象的实例化延迟到子类
当增加新的产品时,不需要更改原有的产品体系和工厂类,只需扩展新的类就可以了。

提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类
解决多个类型产品的创建问题(ORM架构)

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
将一个复杂对象的构建与它的表示分离

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
创建相应数量的原型并克隆它们比手工创建更方便。

使用创建型模式的理由:
创建型模式隐藏了这些类是如何被创建出来和放在一起,整个系统关于这些对象所知道的是由负担类所定义的接口。这样,创建型模式在创建了什么,谁创建它,它是怎么被创建的,以及何时创建这些方面提供了更大的灵活性。
当一个系统应该独立于它的产品创建、构成和表示时,应该考虑使用创建型模式。
松耦合性的理解:
内聚性描述的是一个例程内部组成部分之间相互联系的紧密程度,而耦合性描述的是一个例程与其他例程之间联系的紧密程度。软件开发的目标应该是创建这样的例程:内部完整,也就是强内聚,而与其他例程之间联系则是小巧、直接、可见、灵活的。这就是松耦合。
创建型模式的意义:
创建型模式抽象了实例化的过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。创建型模式都会将关于该系统使用哪些具体的类的信息封装起来。允许客户用结构和功能差别很大的‘产品’对象配置一个系统。配置可以是静态的,即在编译时指定,也可以是动态的,就是运行时再指定。


结构型模式:
将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
让接口不同的类通过适配后,协同工作
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更加灵活。
以动态、透明的方式给单个对象添加职责
桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化

组合模式
将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性

为运用共享技术有效地支持大量细粒度的对象
对象使得内存占用过多,而且如果都是大量重复的对象,则是资源的极大浪费。
为其他对象提供一种代理以控制对这对个对象的访问
代理对象代表一个单一对象
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
为子系统间提供了一个单一而简单的屏障。


行为型模式:
定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主对象在状态发生变化时,会通知所有观察者对象,使它们能够自己更新自己。
观察者模式
web中的监听器
模板方法模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法可以使得子类不改变一个算法的结构即可重定义该算法的某些特定步骤。







解释器模式




访问者模式






迭代器模式