【《软件设计模式与体系结构》学习笔记】软件设计模式概论

【《软件设计模式与体系结构》学习笔记】

软件设计模式的概念



软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的已被验证的成功解决之道。大量的软件设计模式都是之前从事软件设计开发的前人经过大量的实践而摸索出来的,用于帮助后来者快速高效且高质从事软件开发的。

软件设计模式的要素



软件设计模式一般会包含四个基本要素:

  • 模式名称:此种设计模式的名字;
  • 问题:是设计者所面临的设计场景,也就是此种设计模式所适用的情况;
  • 解决方案:描述设计细节,通常会采取UML等图示的方式来进行设计模式的详细描述;
  • 效果:描述适用此设计模式的优势与劣势,包括面向软件的质量属性等。

软件设计模式的分层



软件设计模式根据问题的规模可以分为三个层次

架构模式 -> 设计模式 -> 习惯用法

  1. 架构模式:描述系统级的结构组成、相互关系及相关约束,如MVC模式;
  2. 设计模式:针对系统局部设计问题给出的解决方案,一般情况下,设计模式指的就是这一层次的;
  3. 习惯用法:与具体编程语言相关的一种底层模式。

软件设计模式的分类



《软件设计模式与体系结构》一书中将设计模式归类如下:

面向对象 分布式计算 企业应用软件 面向服务的体系结构(SOA)
创建型模式 从混沌到结构 领域逻辑模式 服务设计模式
结构型模式 分布式基础设施 数据源结构模式 服务库设计模式
行为型模式 事件分离与分发 对象——关系行为模式 服务组合设计模式
接口划分 对象——关系结构模式
组件划分 对象——关系元数据映射模式
应用控制 Web表现模式
并发 分布模式
同步 离线并发模式
对象交互 会话状态模式
适配与扩展 基本模式
模态行为
资源管理
数据库访问

感悟

在我们日常学习中,有些时候不知不觉的应用到某些设计模式,但我们很难意识到这可以抽象为一种思想方法,并且是可以被他人当为一种模式的设计方法。所以,在以后我们又碰到类似问题时,又会重新将以前的思路再来一次,等到脑中的设计思想快成型的时候,才会恍然大悟,一拍脑门道:“哦,这个东西我好像上一次做过。”

设计模式是前人经过验证的成功的解决方案,我们应该要善于学习,学会运用,别辜负了前辈们的心血。站在巨人的肩膀上,我们会看得更远。

时间: 2024-10-11 19:28:53

【《软件设计模式与体系结构》学习笔记】软件设计模式概论的相关文章

设计模式--单例模式(学习笔记)

定义:      单例模式:保证一个类只有一个实例,并且提供一个访问它的全局访问点.(<大话设计模式定义>): 单例模式分为两种: 1>饿汉式单例类:自己被加载时就将自己实例化. 例子:       private SingleExample() {           } private static SingleExample singleExample=new SingleExample(); @Override protected SingleExample getInstanc

[GeekBand] 设计模式之观察者模式学习笔记

本文参考文献::GeekBand课堂内容,授课老师:李建忠 :网络资料: http://blog.csdn.net/hguisu/article/details/7556625 本文仅作为自己的学习笔记,不代表权威,因为是初学,有错误烦请大家指正,谢谢. 1.什么是观察者模式,应用场所有哪些? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它

[GeekBand] 设计模式——工厂模式学习笔记

 本文参考文献:GeekBand课堂内容,授课老师:李建忠 :大话设计模式 其余的模式方法请自行查看Geekband相关课程,在此不累述. 这周的课题是: 针对DrawingSystem中的基类Shape和各个子类Line.Rec.Circle.为支持更多的形状子类,请使用某种模式来支持灵活地创建它们.使用松耦合面向对象设计方法和思想,可使用伪码表示设计. 课程中提到了四种模式,“工厂方法”.“抽象工厂”.“原型模式”.“构建器”模式.最后聚焦在了“工厂方法”和“抽象工厂”这两种方法,那么第一个

设计模式与系统架构学习笔记之设计模式部分

模式: 一个特定的环境,一个问题,一个解决方案 核心思想:进行设计的复用 环境+问题+解决方案 设计模式:描述了定制化的相互通行的对象与类,以及解决特定环境中的通用设计问题. 单例模式: 确保一个类仅有一个唯一的实例,并且提供一个全局的访问点. 解决方案: 将构造函数声明称私有类型,屏蔽通过直接实例化的形式来访问: 控制全局只有一个实例的类-Static: 提供一个可以获得实例的方法,用于返回类的实例,并且保证得到的是同一个对象: (是否已经存在,存在的话,直接返回:不存在的话,创建新的实例,再

Linux学习笔记——软件安装(四)

++++++++++++++++++++++++++++++Linux软件安装+++++++++++++++++++++++++++++++ 注:window系统中的所有安装包都不能在Linux系统中直接安装使用 1. 软件包分类: 源码包(脚本安装包:install.sh)——安装慢,可以看到源代码 二进制包(RPM包,系统默认包)——源码包经过编译之后的机器码,安装快速,看不到源码 2. RPM包管理: RPM包命名规则——范例:httpd-2.2.15-15.e16.centos.1.i6

JAVA学习笔记--策略设计模式与适配器模式

一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而"策略"包含变化的部分.策略就是传递进去的参数对象,它包含要执行的代码. 这种设计模式将算法分别独立封装起来,然后将其当做参数传递给方法从而让方法产生不同的行为,不同的算法可以进行替换(就像给方法不同的实参).我们可以知道,在策略设计模式中有三个部分:策略.策略引用.接收策略引用的方法(这是笔者自己根据理解给出的名词,并没有查询有没有这些术语).下面通

C#注册机与绑定软件(转发自:韩兆新的博客园的C#学习笔记——软件注册与注册机)

(一)软件的实现: SoftReg类: 1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: using System.Management; //需要引用System.Management.dll 6: 7: namespace SoftRegister 8: { 9: class SoftReg 10: { 11: ///<summary> 1

设计模式之禅学习笔记

现在比较熟悉的设计模式有: slf4j=>单例模式,工厂模式,门面(外观)模式 工厂模式 vs 抽象工厂模式 工厂模式 接口,接口实现类,工厂类 抽象工厂模式 接口,借口实现类,工厂抽象类,具体的工厂实现类.红色句子是二者唯一的区别 工厂模式 vs 建造者模式 工厂模式是生产整个产品 建造者模式是重点强调建造的过程 模板模式 spring的很多类都应用了这种模式 比如一个抽象类,有很多具体的实现类继承这个抽象类 抽象类跟接口相比,优点是如果在抽象类中添加新的具体实现方法,不会影响之前已经继承的实

JavaWeb学习笔记——DAO设计模式

《Java程序员面试宝典》学习笔记(设计模式部分)

UML图: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性:  依赖 可以简单的理解,就是一个类A使用到了另一个类B