Java设计模式

来源:互联网 发布:mac自动登入灰色 编辑:程序博客网 时间:2024/06/03 13:49

设计模式是思维具体化的一种方式,是思考如何解决问题的具体过程,设计模式是在解决问题过程中,一些良好思路的经验集成,最早期设计模式人们总要说道Gof的著作,它最早将经典的23中设计模式集合在一起说明,对后期学习设计模式,尤其是对从事件导向程序设计的人们起了莫大的影响。后来设计模式一次被广泛的应用的各种经验集成,甚至还有反模式(AntiPattern),反模式教导你如何避开一些常犯且似是而非的程序设计思维。

Gof模式

为了方便好记,做了一个顺口溜:

创建工单抽原形,
适配器、装饰器,代理外观享组桥。
类策略、类模板,观察迭代责命令,
备忘状态不能少,访问中介解释器。

其中,第一条为创建型模式、第二条为结构型模式,第三条和第四条为行为模式。
其中第三条的行为模式,第一短句为父类与子类直接的关系,第二短句为两个类之间的关系,第三短句为类的状态,第四短句为通过中介类,如下图所示。
行为模式分类

以下的设计模式是我个人从Gof学习中的一些理解,并加入一些其它简单模式。
Creatoinal模式
如何有效率的产生、管理与操作物件,一直都是十分值得讨论的课题,Creational模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向。

  • Factory模式让子类决定实例化哪一个类
  • Abstract Factory模式提供一个创建一系列相关或相互依赖对象的接口
  • Singleton模式保证一个类仅有一个实例
  • Builder模式将一个复杂对象的构建与它表示分离
  • Prototype模式通过拷贝这些原型创建新的对象

Structual模式
如何设计物件之间的静态结构,如何完成物件之间的继承、实现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等问题。Structural模式正如其名,其分类下的模式给出了在不同场合下所调用的各种物件关系结构。

  • Adapter模式:将一个类的接口转换成另一个接口
  • Decorator模式:动态地给对象添加一些额外的职责
  • Proxy模式:为其他对象提供一种代理以控制对这个对象的访问
  • Facade模式:为子系统中的一组接口提供一个一致性的界面
  • Flyweight模式:运用共享技术有效地支持大量细粒度的对象
  • Composite模式:将对象组合成树形结构以表示“部分-整体”的层次结构
  • Bridge模式:将抽象部分与实现部分分离

Behavioral模式
物件之间的合作行为构成程式最终行为,物件之间肉有设计良好的行为互动,不仅使得程式执行时更有效率。更可以让物件的职责更为清晰、整个程式的动能结构(像是物件调度)更有弹性。

  • Strategy模式:使得算法可以独立与使用它的客户而变化
  • Template Method模式:一个操作中的算法的骨架
  • ObServer模式:一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
  • Iterator模式:提供一种方法顺序访问一个集合对象中各个元素
  • Chain of Responsibility模式:对象连成一条链,并沿着这条链传递改请求
  • Command模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化
  • Memento模式:捕获一个对象的内部状态,并在该对象之外保存这个状态
  • State模式:允许一个对象再其内部状态改变时,改变它的行为
  • Visitor模式:作用于某对象结构中的各元素的操作
  • Mediator模式:用一个中介对象来封装一系列的对象交互
  • Interpreter模式:给定一个语言,定义它的文法的一种表示

多执行绪模式

在很多应用中都会使用多执行绪,尤其是在Web应用中,多执行绪以Gof整理的模式为基础,考量多执行绪环境中,如何组合这些基本模式来完成多执行绪安全要求。

  • Guarded Suspension 模式
  • Producer Consumer 模式
  • Thread-Per-Message 模式
  • Worker Thread 模式
  • Thread Pool 模式
  • Future 模式
  • Read-Write-Lock 模式
  • Two-phase Termination 模式
  • Thread-Specific Storage 模式

参考资料

以下是以Java作为设计模式的介绍网站,也是文中所参考的一些网站。

  • Java之美之设计模式
  • 非关语言-设计模式
0 0
原创粉丝点击