1.按照抽象级别可以分为:
(a)分析模式:早期需求分析分析阶段的一些模式。
(b)体系结构模式:设计阶段可复用设计经验。往往重点放在软件整体结构方面。
(c)设计模式:设计阶段可复用的模式。往往重点放在整体结构中的子结构。
(d)惯用法:编程阶段的一些经验,往往和编程语言相关。
2. 按照领域可以分为:
(a)通用模式:领域无关,任何领域都可能涉及到的模式,这种模式往往重点放在软件的非功能性需求上,比如可移植性,可更改性,可维护性等方面。
(b)领域模式:与某个特定领域的具体需求有关,比如通信领域的模式强调通信并发等,企业计算(J2EE,.NET)领域的模式强调基础对象的构建复用以及基础对象的通信联系以及性能提高手段等。这种模式往往重点放在特定领域内的特定非功能性需求或者部分领域通用功能需求上。比如对象的创建销毁,对象之间的透明通信,并发性等。
3.按照模式之间的关系丰富性可以分为:
(a)模式目录:描述每个模式的结构,解决的特定问题,方案,好处以及相应的缺陷。对模式之间的相似性进行分析并根据之归类。简单描述若干模式之间的关系。
(b)模式系统:若干单独的模式组织在一起,模式之间的合作关系,每个模式承担的任务和体现的作用。合作后的整体作用。其介于模式目录和模式语言之间。
(c)模式语言:在模式系统基础上强调对于软件体系结构的计算完全性。在软件构造的每一个方面都有特定的模式满足需求,没有所谓的缺口或者空白。