设计模式学习之七大原则

本文详细介绍了设计模式的学习,特别是七大原则:单一职责、开放封闭、里氏替换、接口隔离、依赖倒置、迪米特法则和合成复用。文章首先阐述了设计模式的概念、本质和分类,然后深入探讨了UML统一建模语言,包括基本构件和类图,最后总结了类之间的关系,如依赖、关联、聚合、组合、泛化和实现,并提供了记忆技巧。
摘要由CSDN通过智能技术生成

设计模式学习之七大原则

一、设计模式前言
1、设计模式的概念
 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
2、设计模式的本质
 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
3、设计模式的基本要素
 软件设计模式使人们可以更加简单方便地复用成功的设计和体系结构,它通常包含以下几个基本要素:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,其中最关键的元素包括以下 4 个主要部分。
(1)模式名称:每一个模式都有自己的名字,通常用一两个词来描述,可以根据模式的问题、特点、解决方案、功能和效果来命名。
(2)问题:描述了该模式的应用环境,即何时使用该模式。它解释了设计问题和问题存在的前因后果,以及必须满足的一系列先决条件。
(3)解决方案:包括设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象的 组合)来解决这个问题。
(4)效果:描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。主要是对时间和空间的衡量,以及该模式对系统的灵活性、扩充性、可移植性的影响,也考虑其实现问题。显式地列出这些效果(Consequence)对理解和评价这些模式有很大的帮助。
4、设计模式的分类
(1)根据目的来分
 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。
 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。
 行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。
(2)根据作用范围来分
 根据模式是主要用于类上还是主要用于对象上来分,这种方式可分为类模式和对象模式两种。
 类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。
 对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。GoF 中除了以上 4 种,其他的都是对象模式
二、UML统一建模语言
 UML(Unified Modeling Language,统一建模语言)是用来设计软件蓝图的可视化建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的标准语言,独立于任何一种具体的程序设计语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。
1、基本构件
 UML 建模的核心是模型,模型是现实的简化、真实系统的抽象。UML 提供了系统的设计蓝图。当给软件系统建模时,需要采用通用的符号语言,这种描述模型所使用的语言被称为建模语言。在 UML 中,所有的描述由事物、关系和图这些构件组成。下图完整地描述了所有构件的关系。
在这里插入图片描述
(1)事物
 事物是抽象化的最终结果,分为结构事物、行为事物、分组事物和注释事物。
①结构事物
 结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,如下表所示。

事物 解释 图例
类(Class) 具有相同属性、方法、关系和语义的对象集合 在这里插入图片描述
接口(Interface) 指一个类或构件的一个服务的操作集合,它仅仅定义了一组操作的规范,并没有给出这组操作的具体实现 在这里插入图片描述
用例(User Case) 指对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(Actor)有价值且可观察的结果 在这里插入图片描述
协作(Collaboration) 定义元素之间的相互作用 在这里插入图片描述
组件(Component) 描述物理系统的一部分 在这里插入图片描述
活动类(Active Class) 指对象有一个或多个进程或线程。活动类和类很相象,只是它的对象代表的元素的行为和其他元素是同时存在的<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值