1

1.创建型模式(creational)
1).工厂模式(factory method)

a.定义一个创建对象的接口,但由子类决定需要实例化哪个类

2).抽象工厂模式(abstract factory)

a.提供创建相关或者相互依赖的一组对象接口,不需要指定类

3).单例模式(singleton)

a.保证一个类只有一个实例,并提供一个全局性的访问点
b.三私一公(私有构造,克隆,静态成员变量 & 公共静态方法)

4).建造者模式(builder)

a.将复杂对象的结构与描述隔离开,使用相同的结构得到不同的描述

5).原型模式(prototype)

a.使用原型来限制要创建类的类型,通过拷贝原型得到新的类

2.结构型模式(structural)

1).适配器模式(adapter)----接口转换

a.将一个类的接口转换成用户希望得到的另一个接口,使原本不相容的接口得以协同工作

2).桥接模式(bridge)

a.将类的抽象概念和实现分离开,相互独立变化

3).组合模式(composite)

a.将对象组成树结构来表示局部与整体的层次关系,客户可以同意处理单个对象和对象组合

4).装饰器模式(decorator)

a.给对象动态的加入新的职责,提供了用子类扩展功能的一个灵活替代

5).外观模式(facade)(门面模式)----前台接待

a.给一个子系统的所有接口提供一个统计的接口,定义更高层的接口,使子系统便于使用

6).享元模式(flyweight)

a.提供至此大量细粒度对象共享的有效方法

7).代理模式(proxy)

a.给另外一个对象提供一个代理或定位符号,以控制对其访问 

3.行为型模式(behavioral)
1).责任链模式(chain of responsibility)----工作流

a.通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合.将接受对象链接起来,在链中传递请求,直到有一对象处理这个请求

2).命令模式(command)

a.将一个请求封装为一个对象,从而将不同的请求对数化并进行排队或登记,以支持撤销操作

3).解释器模式(interpreter)

a.给定一种语言,给出语法的一种描述方法和一个解释器,改解释器用这种描述方法解释语言中的句子

4).迭代器模式(iterator)

a.提供一种顺序性访问的一个聚集对象中元素的方法,而不需要暴露它的底层描述

5).中介者模式(mediator)

a.定义一个对象封装一系列对象的交互.保持对象间避免显式的互相联系

6).备忘录模式(memento)

a.在不破坏封装的条件下,获取一个内部状态并将其外部化,课时对象恢复到这个状态

7).观察者模式(observer)----微信推送

a.定义一个对象间一对多的信赖联系,当对象改变状态时,与其有信赖关系的对象都得到通知并自行更新

8).状态模式(state)

a.允许一个对象在内部状态改变时的行为,对象看起来似乎能改变自己的类

9).策略模式(strategy)----锦囊妙计

a.定义一族算法,对每一个进行封装,使其相互可交换,算法独立于用户变化

10).模版模式(template)

a.定义一个操作的算法股价,使某些步骤决定于子类.子类重定义一个算法的某些步骤,但不改变整个算法的结构

11).访问者模式(visitor)

a.描述在一个对象结构中队某个元素需要执行的一个操作.在不改变被操作的元素类的条件下定义新操作

clpboard.png

4.J2EE模式
MVC模式(MVC)
业务代表模式(business delegate)
组合实体模式(composite entity)
数据访问对象模式(data access object)
前端控制器模式(front controller)
拦截过滤器模式(intercepting filter)
服务定位器模式(service locator)
传输对象模式(transfer object)
5.设计模式的六大原则
1、开闭原则(对扩展开放,对修改关闭)
2、里氏代换原则(任何基类可以出现的地方,子类一定可以出现)
3、依赖倒转原则(针对对接口编程,依赖于抽象而不依赖于具体)
4、接口隔离原则(使用多个隔离的接口,比使用单个接口要好)
5、迪米特法则(最少知道原则--一个实体应尽量少的与其他实体之间发生相互作用)
6、合成复用原则(精良使用合成/聚合的方式,而不是使用继承)

参考<<软件体系结构>>,仅供学习


summerNazi
19 声望3 粉丝

bug