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之美之设计模式
- 非关语言-设计模式
- [Java] JAVA设计模式
- Java设计模式--Java设计模式介绍
- Java设计模式-模板设计
- java设计模式-----(设计原则)
- Java设计模式-设计原则
- java设计模式-观察者模式
- Java设计模式-----Singleton模式
- Java设计模式-----Command模式
- Java设计模式-----State模式
- Java设计模式-----Composite模式
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java设计模式_Composite模式
- java 设计模式-策略模式
- java设计模式 访问者模式
- java设计模式-代理模式
- java设计模式----适配器模式
- Java 设计模式 --装饰模式
- 我的第一本Linux笔记(1)——linux常用命令
- Java加密解密器
- 安卓手机微信取数据库打开密码的代码
- HDU 2255奔小康赚大钱
- 剑指offer 57 - 删除链表中重复的节点
- Java设计模式
- 使用ztree插件实现前端树状结构
- Handler的学习(二)
- Android中的错误:Wrong orientation? No orientation specified, and the default is horizontal
- 抽象工厂模式
- 几种LANDSAT文件格式导入方式[未完]
- Windows环境下PHP环境搭建
- 直接利用Android手机破解微信加密数据库EnMicroMsg.db
- .....an attempt to load the C runtime library without using a manifest.....