模式的概念最早诞生于建筑业,模式之父-Alexander博士出版的《建筑设计语言》一书总结概括了253个建筑和城市规划模式,对计算机领域”设计模式“运动产生了深远的影响。
模式是特定环境下,人们解决某类重复出现问题的一套成功或有效的方案,有助于人们按照既定思路快速设计出一套优良的解决方案。
同理,设计模式就是针对软件开发中经常遇到的设计问题,根据基本的设计原则,而总结出的一套实用的解决方案。
Gof基于7个面向对象设计原则总结出了23个设计模式,旨在来统一沟通面向对象方法在分析、设计、实现方面的鸿沟。
软件模式包括:设计模式和架构模式
软件模式组成:
(1)问题描述
(2)前提条件(环境或约束条件)
(3)解法
(4)效果
软件模式遵循三大律,只有经过三个以上不同类型的系统的校验,才能从候选模式升为模式。
GRASP设计原则:它描述了对象设计和职责分配的基本原则核心思想是职责分配、用职责设计对象。它包含9个基本原则
GoF设计模式是针对特定问题而提出解决方案。GRASP设计原则是其的基础。
设计模式包含模式名称、问题、范围、目的、解决方案、效果、实例代码、末态环境、相关设计模式等10个要素,其中4个关键要素为:
(1)模式名称
(2)问题
(3)解决方案
(4)效果
根据目的,设计模式分为三类:
(1)Creational:创建型模式,创建对象
(2)Structural:结构型模式,处理类或对象的组合
(3)Behaviroal:行为型模式,描述类或对象如何交互和怎样分配职责
根据范围,分为两种:
(1)类模式处理类之间的关系,这些关系通过继承建立,在编译时刻就确定下来,是一种静态关系。
(2)对象模式处理对象间的关系,这些关系在运行时变化,具有动态性。
设计模式的优点
(1)融合专家的经验
(2)提供通用的设计词汇和语言,便于人们复用成功的设计和体系结构
(3)设计方案更加灵活且易于修改,提高开发效率和软件质量,节约成本
(4)有助于理解面向对象的思想