安卓开发 季度总结九 -----java的二十三种设计模式
1.单例模式
确保单例类 只有一个实例,并且这个单例类 提供 一个函数 接口 让其他类 获取到这个唯一的实例。
2. Builder 模式
将一个复杂对象 的构造 与它的 表示分离,使得 同样的 构造过程 可以创造不同的表示。
3.原型模式
就是将一个对象进行拷贝。
对于 类A 实例 a,要对a 进行拷贝,就是创建 一个跟 a 一样的类型的A 的实例b,然后将 a 的属性全部复制给 b.
分为:深拷贝 浅拷贝
4.工厂方法模式
定义: 一个创建对象的接口,让子类 决定实例化哪个类。
5.抽象工厂模式
定义:为创建一组相关 或者相互依赖的对象提供一个接口,而不是需要制定他们的具体类。
6.策略模式
定义: 有一系列 的算法,将每个算法封装起来(每个算法可以封装到不同类中),各个算法之间可以替换,
策略模式让算法 独立于 使用它的客户 而独立变化。
7.状态模式
定义:状态模式中,行为是由状态 来决定的,不同状态下有不同的行为。
注意:状态模式和策略 模式的结构几乎一模一样,主要是表达的目的和本质不同,
状态模式的行为是平行的,不可替换的,
策略模式的行为是彼此独立可相互替换的。
8.责任链模式
定义: 使多个对象都有 机会去处理请求,从而避免请求的发送者和接收者直接的耦合关系。
将这些对象连成一条链,并沿着这条链传递该请求,
直到有对象处理它为止。
9.解释器模式
定义: 给定一个语言,定义它的语法,并定义一个解释器,这个解析器用来解析语言。
10.命令模式
定义:命令模式 将每个请求 封装成一个对象,从而让用户使用不同的请求,把客户端参数化,
将请求 进行排队或者 记录请求日志,以及支持可撤销操作。
11.观察者模式
定义:定义了 对象之间 的 一对多 的关系,其实就是 1 对 n,当“1” 发生变化时候,
"n" 全部得到通知,并且更新。
12. 备忘录模式
定义: 在不破坏封闭的前提下,捕获一个对象的内部状态,并在对象之外保持这个状态,
这样,以后就可以将对象恢复到原先保存的状态中。
13.迭代器模式
定义: 提供一种 方法顺序 访问一个容器对象中的各个元素,而不是需要暴露该对象的内部表示。
14.模板方法模式
定义:一个操作中 的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构
即可重新定义 该算法的某些特定的步骤。
15.访问者模式
定义:封装一些 作用于某种数据结构中各元素 的操作,它可以在不改变这个数据结构的前提下
定义作用于这些元素的 新的操作。
16.中介者模式
定义:中介者模式 包装了一系列对象相互作用的 方式,使得这些对象不必相互作用调用。
从而使它们可以轻松解耦合。当某些对象之间的作用发生改变时,
不会立即影响其他的一些对象之间的作用,
保证这些作用可以彼此独立的变化。
注意: 中介者模式将 多对多的相互作用转化为一对多的相互作用。
17.代理模式
定义:为其他类提供 一种 代理 以控制这个对象的访问。
18. 组合模式
定义:将对象组成 树形结构,以表示 “部分------整体”的层次结构,
使得用户对单个对象 和 组合对象 的使用具有一致性。
19.适配器模式
定义: 把一个类的接口 变换成 客户端 所期待的另一个接口。
从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
20.装饰模式
定义:动态的给一个对象添加一些额外的职责。就扩展功能而言,他比生成子类方式更为灵活。
21.享元模式
定义:使用享元对象 有效 地支持 大量的细粒度对象。
享元模式举例:a. Java 中的常量池,线程池。
b. 线程通信中的 Message.
22. 外观模式
定义 : 为子系统中的一组接口提供一个一致的界面,
Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
23.桥接模式
定义: 将 抽象部分 与 实现部分 分离 ,使得它们能独立地进行变化。