Java的23种设计模式


     

                                                                   图:Java的23种设计模式

一、什么是模式?

模式:问题、解决方案共同的本质,具有代表性的。

二、设计模式

设计模式:就是能够将问题抽象化,能够不断的反复套用。提高代码重用性和可靠性。

三、模式分类

(1)创建型模式

1.概念:用于处理对象创建的设计模式。根据具体的情况使用合适的方式创建对象。基本的对象创建方式会增加设计的复杂度等设计问题。创建型模式通过以某种方式控制对象的创建来解决问题。

                               就是分离了与对象创建,结合,表示的方式,从而增强了对象和类之间的独立性。


2.两种思想:a. 将系统使用的具体类型封装起来。(对象创建模式)

                     b. 隐藏具体类的实例创建和结合的方式。(类的创建模式)


3.何时能用到它?

A. 需要与它的对象创建能够相互独立。(抽象工厂模式)

B. 一组相关对象被设计为一起使用。

C. 隐藏一个类库具体实现,只给暴露出接口。

D. 创建独立复杂对象的不同表示。(建造者模式)

E. 父类希望它的子类实现它所创建的对象。(工厂方法模式)

F. 类的实例化在运行时才指定。(原型模式)

G. 一个类只能有一个实例,而且这个实例能在任何时候都能访问到。(单例模式)

H. 实例在不修改的情况下,能够可扩展性

4.具体分类:

抽象工厂模式:又称工具箱(Kit或者Toolkit)模式。所有形态的工厂模式最抽象和最具一般性的一种形态。

工厂方法模式:又称多态性工厂(Polymorphic Factory)或虚拟构造子(Virtual Constructor)模式。定义一个创建产品对象的工厂接口。将实际创建工作推迟到子类中。

单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

建造者模式:将内部表象和生成过程分割开,从而可以使一个建造过程生成具有不同的内部表象的对象。

原型模式:创建复杂或者耗时的实例,复制一个已存在的实例使程序高效运行。

                 

(2)结构型模式:

1.概念:从程序结构上解决模块之间耦合性的设计模式。

2.具体分类:

适配器模式:使接口不兼容而无法一起工作的两个类能够在一起工作。

桥接模式(最复杂的模式之一):抽象和实现相分离。使它独立变化。

组合器模式:又称“部分-整理(Part-whole)”模式,将对象组合成树形结构以表示"部分-整体"的层次结构。

装饰模式:又称包装(wrapper)模式,动态地往类中添加新的行为的设计模式,继承关系的一个替代方式。

外观模式:给子系统中的一组接口提供一个一致的界面,定义了一个高层接口,让子系统更加容易使用。

享元模式:使用共享物件来减少内存使用量。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。


(3)行为型模式

1.概念:识别对象间的常用交流模式并加以实现。

2.具体分类:

职责链模式:包含一些命令对象和一系列的处理对象。每个处理对象决定它能处理哪些命令对象。简单讲,给多个对象处理一个请求的机会。

命令模式:又称行为(Action)模式或交易(Transaction)模式。把一个请求或者操作封装到一个对象中。允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,提供撤销和恢复。

解释器模式:给定语言后,定义文法(语言的结构方式)的一种表示并定义一个解释器,客户端使用解释器进行解释这个语言的句子。

迭代器模式:又称游标(Cursor)模式,最简单最常见的设计模式。通过特定的界面巡访容器每一个元素,而不用考虑具体操作。

中介者模式:用一个对象封装了一系列对象的交互,使得这些对象不必互相明显引用。这些对象中的某些对象之间的相互作用发生了改变时,不会立即影响到其他的一些对象之间的相互作用,从而保证这些相互作用可以彼此独立地变化。

备忘录模式:又称快照(Snapshot Pattern)模式或Token模式,在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样就可将对象恢复到原先保存的状态。与命令模式和迭代模式同时使用。

观察者模式:又称发布订阅(publish/Subscribe)模式、模型-视图(Model/view)模式、源-监听器(Source/Listener)模式或从属(Dependents)模式。定义了一种一对多的依赖关系,一个目标对象管理所有相依于它的观察者对象,并在本身状态改变时主动发出通知所有观察者对象,使它们主动更新自己。

状态模式:又称状态对象(Objects for States)模式,允许一个对象在其内部状态改变时,改变其行为。

策略模式:封装一组算法,具有共同接口的独立类中,不影响客户端的情况下改变

模板方法:定义一个算法步骤,在不影响算法结构下,允许子类重新定义某些步骤。

访问者模式:将算法与对象结构分离出来。封装一些在某种数据结构元素之上的操作,操作需要修改时,接受这个曹祖的数据结构可以保持不变。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值