设计模式介绍

简介: 设计模式介绍

补充一篇文章,介绍一下设计模式,总共分为五个部分,如下。

1、简介

在软件工程中,设计模式是一种解决常见问题的模板。

根据《设计模式:可复用面向对象软件的基础》(设计模式书)中的定义,一共有23 种设计模式。

这些模式被分为三大类:创建型模式、结构型模式、行为型模式。

2、三大类

2.1创建型模式:

工厂方法(Factory Method)

抽象工厂(Abstract Factory)

单例(Singleton)

建造者(Builder)

原型(Prototype)

2.2结构型模式:

适配器(Adapter)

桥接(Bridge)

组合(Composite)

装饰(Decorator)

外观(Facade)

享元(Flyweight)

代理(Proxy)

2.3行为型模式:

责任链(Chain of Responsibility)

命令(Command)

解释器(Interpreter)

迭代器(Iterator)

中介者(Mediator)

备忘录(Memento)

观察者(Observer)

状态(State)

策略(Strategy)

模板方法(Template Method)

访问者(Visitor)

这些设计模式可以在软件设计中更好地处理常见问题,并且这些模式是可复用的,可以在不同的软件设计中

3、作用

设计模式是一组经过验证的软件开发模式,用于解决常见软件设计问题。它们提供了一种可重复使用的方法来解决特定类型的问题。

设计模式的作用有以下几点:

  1. 提高代码重用性:设计模式提供了一组可重复使用的解决方案,可以减少开发人员编写重复代码的时间。
  2. 提高代码可读性:设计模式给出了一组易于理解和使用的代码结构,可以让代码更易于阅读和维护。
  3. 提高代码可靠性:设计模式经过验证,可以提高代码的可靠性和健壮性。
  4. 减少设计复杂性:设计模式提供了一组简单易懂的解决方案,可以帮助开发人员减少设计复杂性。
  5. 提高开发效率:设计模式可以帮助开发人员快速解决常见问题,提高开发效率。

总之,设计模式是一种可重复使用的解决方案,可以帮助开发人员解决常见软件设计问题,提高代码重用性、可读性、可靠性、减少设计复杂性、提高开发效率。使用设计模式可以让代码具有更好的结构性和可维护性,更容易地满足软件的需求变化。

4、为什么有设计模式

设计模式之所以会产生,是因为软件开发过程中会经常遇到相似的问题。开发人员会面临许多挑战,例如如何解耦组件之间的关系、如何管理类之间的依赖关系、如何提高代码的可读性和可维护性等。

在解决这些问题时,开发人员可能会发现一些有用的技巧和方法,这些技巧和方法可以被重复使用,并在其他项目中进行改进。

随着这些技巧和方法的不断演进和改进,就产生了设计模式。设计模式是一组经过验证的解决方案,可以帮助开发人员解决常见的软件设计问题。

总之,设计模式是在不断实践和总结中产生的,是对软件开发过程中遇到的常见问题的有效解决方案。它们是一组经过验证的、可重复使用的规则和原则,可以帮助开发人员解决软件设计问题,提高代码的可读性、可靠性和可维护性。

5、面向对象设计六大原则

面向对象设计的六大原则是:

  1. 单一职责原则 (Single Responsibility Principle, SRP):一个类只负责一项职责,避免类的职责过重。
  2. 开放-封闭原则 (Open-Closed Principle, OCP):一个类应该对扩展开放,对修改封闭。
  3. Liskov 替换原则 (Liskov Substitution Principle, LSP):所有引用基类对象的地方必须能透明地使用其子类对象。
  4. 接口隔离原则 (Interface Segregation Principle, ISP):一个类对另一个类的依赖应该建立在最小接口上。
  5. 依赖倒置原则 (Dependency Inversion Principle, DIP):高层模块不应该依赖于低层模块,两者都应该依赖于抽象。
  6. 迪米特法则 (Law of Demeter, LoD):一个对象应该对其他对象保持最少的了解。

这六大原则是面向对象设计的基石,遵循这些原则可以让代码具有更好的结构性和可维护性,更容易地满足软件的需求变化。

相关文章
|
数据采集 数据可视化 数据挖掘
Python数据挖掘项目实战——自动售货机销售数据分析
Python数据挖掘项目实战——自动售货机销售数据分析
|
Kubernetes Cloud Native Serverless
什么是云原生?聊聊云原生的前世今生
什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的前世今生那些事。
2914 0
|
机器学习/深度学习 自然语言处理 人机交互
深度学习之情感生成与交互
基于深度学习的情感生成与交互是一个新兴的研究领域,旨在通过深度学习技术生成具有情感的反应,以增强人机交互的自然性和有效性。该技术涉及情感识别、自然语言处理、计算机视觉等多个领域,并在多个应用场景中展现出潜力。
248 4
|
分布式计算 搜索推荐 MaxCompute
基于OpenSearch向量检索版的多主体识别最佳实践
本文将介绍如何通过OpenSearch向量检索版,在图像搜索服务中进行多主体识别。
136416 9
|
Linux iOS开发 MacOS
|
Shell 流计算 Docker
在docker中运行flink
网上搜索了很多文章都是千篇一律的运行不起来
|
弹性计算
阿里云ECS服务器出网带宽和入网带宽详解及选择
阿里云ECS服务器的带宽是我们自己花钱买的,也叫出网带宽,就是从服务器流出去的带宽。有出就有入,入网带宽说的是从外部流入到服务器的带宽。对于新手不太了解一出一入的关系,以及具体使用情况。本文科普ECS云服务器出网带宽和入网带宽的详细情况。
5457 0
阿里云ECS服务器出网带宽和入网带宽详解及选择
|
存储 SQL NoSQL
什么是云数据库?它与传统数据库有什么不同之处?
什么是云数据库?它与传统数据库有什么不同之处?
774 0
|
存储 人工智能 运维
阿里云开源大数据平台升级EMR2.0发布 性能最高可提升6倍
阿里云EMR2.0为用户提供了全新的平台、开发、资源形态、分析场景等更优的产品体验,通过EMR Doctor健康检查、全面的服务巡检和事件通知、节点故障补偿等运维能力的升级,预估运维成本可降低20%-30%。新平台致力于为客户快速构建高性价比、安全可靠、兼容生态的开源大数据平台。
阿里云开源大数据平台升级EMR2.0发布  性能最高可提升6倍
|
IDE 程序员 编译器
C#编程学习09:vs2015的windows窗体应用程序创建及英文界面变换为中文界面的方法
C#编程学习09:vs2015的windows窗体应用程序创建及英文界面变换为中文界面的方法
C#编程学习09:vs2015的windows窗体应用程序创建及英文界面变换为中文界面的方法