一、设计模式的分类
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:
二、设计模式的六大原则
总原则:开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类等,后面的具体设计中我们会提到这点。
1、单一职责原则
不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。
2、里氏替换原则(Liskov Substitution Principle)
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科
历史替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。
4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
5、迪米特法则(最少知道原则)(Demeter Principle)
就是说:一个类对自己依赖的类知道的越少越好。也就是说无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。
最少知道原则的另一个表达方式是:只与直接的朋友通信。类之间只要有耦合关系,就叫朋友关系。耦合分为依赖、关联、聚合、组合等。我们称出现为成员变量、方法参数、方法返回值中的类为直接朋友。局部变量、临时变量则不是直接的朋友。我们要求陌生的类不要作为局部变量出现在类中。
6、合成复用原则(Composite Reuse Principle)
原则是尽量首先使用合成/聚合的方式,而不是使用继承。
相关推荐
本文将深入解析概要设计说明书的大纲及其主要内容。 1. **引言** - **目的**:明确编写概要设计说明书的目标,通常是为了指导开发团队理解并实现软件的总体架构和主要功能。 - **背景**:介绍软件项目的基本信息...
### 软件概要设计模板知识点解析 #### 一、引言部分 **1.1 目的** - **目的说明**:本章节旨在明确文档的目的,即为不同的读者群体提供必要的信息,如项目管理人员、设计人员等,以便他们能够理解和应用软件概要...
本概要设计说明书将深入探讨权限控制系统的原理、设计模式以及实施策略,旨在为开发者提供一套完整的权限管理框架。 一、权限控制原理 权限控制的核心是基于角色的访问控制(Role-Based Access Control, RBAC)。...
这些实例提供了具体的设计模式、解决方案和实践经验,可以帮助开发者更好地理解和掌握概要设计的技巧和原则。无论是初学者还是经验丰富的工程师,都能从中受益,提升自己的设计能力和软件质量。因此,这份资源是学习...
内容概要:本文详细介绍了设计模式的三大分类——创建型、结构型和行为型设计模式,并分别给出相应的Python代码实例。文中还探讨了设计模式的优势以及在开发中的应用案例,帮助开发人员提升项目质量和开发效率。 ...
### 标准概要设计说明书知识点解析 #### 一、概览 **概要设计说明书**是一份重要的文档,用于详细描述软件系统的设计方案。它不仅涵盖了系统的整体架构设计,还包括了具体的数据结构、接口设计等内容,是软件开发...
《软件工程概要设计文档——数据库设计说明书》是软件开发过程中的重要组成部分,主要阐述了在软件概要设计阶段对数据库的设计思路、方法和规范。本文将深入解析这份文档的关键内容,包括其目的、背景、定义以及外部...
综合来看,这个压缩包集合了C语言设计模式的理论与实践,不仅有详细的模式解析,还有配套的实例代码。它适合那些希望深化对C语言编程理解,并且希望提高软件设计质量的程序员。通过这种全面的学习资源,开发者不仅...
### 概要设计文档模板知识点解析 #### 一、引言 **1.1 编写目的** - **目的:** 明确概要设计文档的编写目的是为了指导后续的详细设计与开发工作,并确保所有参与项目的人员都能理解设计意图与目标。 - **预期读者:*...
内容概要:本文详细解析了软件体系结构中的各大知识点,包括类图、UML图、质量效用树、设计模式等。通过具体的例子和场景,讲解了如何设计和评估软件体系结构。文章还介绍了多种设计模式的实现方法,如工厂方法模式...
- **文献来源**:文章列举了几篇重要的参考资料,包括电梯系统实时控制软件建模、软件工程基础理论、软件设计模式教程等,这些文献提供了电梯系统设计的理论依据和技术指导。 #### 四、总体设计 - **需求规定**: ...
### 数据库概要设计知识点解析 #### 一、概要设计的重要性及目的 数据库概要设计是软件开发过程中的一个重要阶段,它对于后续的详细设计、编码和测试有着至关重要的影响。良好的概要设计能够帮助开发团队理解系统...
### 概要设计说明书知识点详解 #### 一、引言 ...通过上述详尽的解析,我们可以看出概要设计说明书涵盖了从项目背景、需求分析到系统架构设计、运行维护等多个方面,是软件开发不可或缺的一部分。
内容概要:“萨达大”在CSDN博客中分享了关于软件设计师考试的知识点整理、设计模式解析、UML建模等多个方面的内容。这些资料详细覆盖了软件设计师所需的理论和技术要点,特别是针对计算机组成、软件工程、各种设计...
内容概要:本文详细介绍了安卓开发的基础架构和常见设计模式,以及在实际项目中的应用。首先解释了四大基本组件(活动、服务、广播接收器、内容提供者)及其协同工作的机制,接着讨论了MVC、MVVM和MVP三种设计模式的...
### 管理系统概要设计模板解析 #### 一、导言 1. **目的** 本文档旨在为网上招聘系统提供一个全面的概要设计方案,它覆盖了系统的基本架构、功能划分以及各个模块的设计思路。文档的主要目标是帮助开发团队明确...
### DEMO系统概要设计文档知识点解析 #### 一、引言 **1.1 目的** 本文档旨在明确DEMO系统的总体架构和技术实现方案,重点在于介绍系统的层次划分和核心机制的设计。 **1.2 背景** DEMO系统作为一款面向特定业务...
2.2 设计思想:阐述设计的原则、策略和采用的设计模式,这有助于保持设计的一致性和可维护性。 2.3 网络结构:描述系统的网络布局,包括服务器配置、客户端分布、通信协议等,确保系统在不同环境下的适应性。 2.4 ...
### 软件工程概要设计模板知识点解析 #### 一、引言 **1.1 编写目的** - **目的**: 明确编写概要设计说明书的主要目标,即为后续的设计、编码、测试等工作提供指导依据。 - **读者**: 预期的读者群体主要包括项目...