软件的架构与设计模式之模式的种类
1.按照抽象级别可以分为:
(a)分析模式:早期需求分析分析阶段的一些模式。
(b)体系结构模式:设计阶段可复用设计经验。往往重点放在软件整体结构方面。
(c)设计模式:设计阶段可复用的模式。往往重点放在整体结构中的子结构。
(d)惯用法:编程阶段的一些经验,往往和编程语言相关。
2. 按照领域可以分为:
(a)通用模式:领域无关,任何领域都可能涉及到的模式,这种模式往往重点放在软件的非功能性需求上,比如可移植性,可更改性,可维护性等方面。
(b)领域模式:与某个特定领域的具体需求有关,比如通信领域的模式强调通信并发等,企业计算(J2EE,.NET)领域的模式强调基础对象的构建复用以及基础对象的通信联系以及性能提高手段等。这种模式往往重点放在特定领域内的特定非功能性需求或者部分领域通用功能需求上。比如对象的创建销毁,对象之间的透明通信,并发性等。
3.按照模式之间的关系丰富性可以分为:
(a)模式目录:描述每个模式的结构,解决的特定问题,方案,好处以及相应的缺陷。对模式之间的相似性进行分析并根据之归类。简单描述若干模式之间的关系。
(b)模式系统:若干单独的模式组织在一起,模式之间的合作关系,每个模式承担的任务和体现的作用。合作后的整体作用。其介于模式目录和模式语言之间。
(c)模式语言:在模式系统基础上强调对于软件体系结构的计算完全性。在软件构造的每一个方面都有特定的模式满足需求,没有所谓的缺口或者空白。=============================================================
模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。
由于[GOF95]是论述软件模式的著作的第一本,也是OO设计理论著作中最流行的一本,因此有些人常常使用设计模式(Design Pattern)一词来指所有直接处理软件的架构、设计、程序实现的任何种类的模式。另外一些人则强调要划分三种不同层次的模式:架构模式(Architectural
Pattern)、设计模式(Design Pattern)、成例(Idiom)。成例有时称为代码模式(Coding Pattern)。
这三者之间的区别在于三种不同的模式存在于它们各自的抽象层次和具体层次上。架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框架。设计模式定义出子系统或组件的微观结构。代码模式(或成例)是特定的范例和与特定语言有关的编程技巧。代码模式的好坏会影响到一个中等尺度组件的内部、外部的结构或行为的底层细节,但不会影响到一个部件或子系统的中等尺度的结构,更不会影响到系统的总体布局和大尺度框架。
代码模式或成例(Coding Pattern 或 Idiom) 编码风格规范《Sun编码规范》
代码模式(或成例)是较低层次的模式,并与编程语言密切相关。代码模式描述怎样利用一个特定的编程语言的特点来实现一个组件的某些特定的方面或关系。
较为著名的代码模式的例子包括双检锁(Double-Check Locking)模式等。
设计模式(Design Pattern) :《Design Pattern (GoF)》/《设计模式解析》/《敏捷软件开发》/《重构》
一个设计模式提供一种提炼子系统或软件系统中的组件的,或者它们之间的关系的纲要设计。设计模式描述普遍存在的在相互通讯的组件中重复出现的结构,这种结构解决在一定的背景中的具有一般性的设计问题。
设计模式常常划分成不同的种类,常见的种类有:
创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等
结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等
行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(Iterator)模式、责任链(Chain of Responsibility)模式、备忘录(Memento)模式、命令(Command)模式、状态(State)模式、访问者(Visitor)模式等等。
以上是三种经典类型,实际上还有很多其他的类型,比如Fundamental型、Partition型,Relation型等等
设计模式在特定的编程语言中实现的时候,常常会用到代码模式。比如单例(Singleton)模式的实现常常涉及到双检锁(Double-Check Locking)模式等。
架构模式(Architectural Pattern) :《面向模式的软件体系结构》/《企业应用架构模式》/《伸缩性、可用性、稳定性(Scalability, Availability & Stability Patterns)》/《Architectural Styles and the Design of Network-based Software Architectures》中文版(《架构风格与基于网络的软件架构设计》)
一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。有些作者把这种架构模式叫做系统模式[STELTING02]。
一个架构模式常常可以分解成很多个设计模式的联合使用。显然,MVC模式就是属于这一种模式。MVC模式常常包括调停者(Mediator)模式、策略(Strategy)模式、合成(Composite)模式、观察者(Observer)模式等。
这三者之间的区别在于三种不同的模式存在于它们各自的抽象层次和具体层次上。架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框架。设计模式定义出子系统或组件的微观结构。代码模式(或成例)是特定的范例和与特定语言有关的编程技巧。代码模式的好坏会影响到一个中等尺度组件的内部、外部的结构或行为的底层细节,但不会影响到一个部件或子系统的中等尺度的结构,更不会影响到系统的总体布局和大尺度框架。
代码模式或成例(Coding Pattern 或 Idiom) 编码风格规范《Sun编码规范》
代码模式(或成例)是较低层次的模式,并与编程语言密切相关。代码模式描述怎样利用一个特定的编程语言的特点来实现一个组件的某些特定的方面或关系。
较为著名的代码模式的例子包括双检锁(Double-Check Locking)模式等。
设计模式(Design Pattern) :《Design Pattern (GoF)》/《设计模式解析》/《敏捷软件开发》/《重构》
一个设计模式提供一种提炼子系统或软件系统中的组件的,或者它们之间的关系的纲要设计。设计模式描述普遍存在的在相互通讯的组件中重复出现的结构,这种结构解决在一定的背景中的具有一般性的设计问题。
设计模式常常划分成不同的种类,常见的种类有:
创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等
结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等
行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(Iterator)模式、责任链(Chain of Responsibility)模式、备忘录(Memento)模式、命令(Command)模式、状态(State)模式、访问者(Visitor)模式等等。
以上是三种经典类型,实际上还有很多其他的类型,比如Fundamental型、Partition型,Relation型等等
设计模式在特定的编程语言中实现的时候,常常会用到代码模式。比如单例(Singleton)模式的实现常常涉及到双检锁(Double-Check Locking)模式等。
架构模式(Architectural Pattern) :《面向模式的软件体系结构》/《企业应用架构模式》/《伸缩性、可用性、稳定性(Scalability, Availability & Stability Patterns)》/《Architectural Styles and the Design of Network-based Software Architectures》中文版(《架构风格与基于网络的软件架构设计》)
一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。有些作者把这种架构模式叫做系统模式[STELTING02]。
一个架构模式常常可以分解成很多个设计模式的联合使用。显然,MVC模式就是属于这一种模式。MVC模式常常包括调停者(Mediator)模式、策略(Strategy)模式、合成(Composite)模式、观察者(Observer)模式等。
此外,常见的架构模式还有:
·Layers(分层)模式,有时也称Tiers模式
·Blackboard(黑板)模式
·Broker(中介)模式
·Distributed Process(分散过程)模式
·Microkernel(微核)模式
架构模式常常划分成如下的几种:
一、 From Mud to Structure型(从混沌到结构)。帮助架构师将系统合理划分,避免形成一个对象的海洋(A sea ofobjects)。包括Layers(分层)模式、Blackboard(黑板)模式、Pipes/Filters(管道/过滤器)模式等。
二、分布式系统 (Distributed Systems)型。为分布式系统提供完整的架构设计,包括像Broker(代理者)模式等。
三、人机互动(Interactive Systems)型,支持包含有人机互动介面的系统的架构设计,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control:表示-抽象-控制)模式等。
四、Adaptable Systems型(适应性系统),支持应用系统适应技术的变化、软件功能需求的变化。如Reflection(反射)模式、Microkernel(微核)模式等。
参考《面向模式的软件体系结构 卷1:模式系统》

浙公网安备 33010602011771号