梳理你的思路(从OOP到架构设计)_介绍GoF设计模式

embedded/2024/12/24 3:39:39/

目录

GoF的由来

GoF的种类


GoF的由来

  • 裁缝有样式、围棋有棋谱、烹饪有食谱、武功有招式、战争有兵法, ..... 皆是专家和高手的经验心得,通称为:模式(Pattern)。
  • 模式告诉您理想的方案像什么、有那些特性﹔ 同时也告诉您些规则,让您依循之,而产生适合于环境的具体方案。
  • 1964年﹐ 著名建筑学家亚历山大(Christopher Alexander)出版一本书﹕<<Notes on the Synthesis of Form>>,在書裡, 他提出「形」 (Form)的概念,认为建筑师可创造形,来化解环境中互相冲突的需求,使冲突变成为和谐的景象。
  • 接着,他提出了模式(Pattern)观念,造形和模式引导建筑师逐步创造出新奇的架构
  • 于1995年, Erich Gamma、 Richard Helm、 Ralph Johnson和John Vlissides共4人一起出版了惊动软件界的经典名著:<<Design Patterns: Elements of Reusable Object-Oriented Software>> 成为最热门的软件设计书籍。
  • 由于此书作者是 4位声名响亮的名家,大家就称他们为「设计模式4人帮(Gang of Four)」,简称为GoF。在此书里,列举了软件界的23个常用模式。 大家就稱之為:GoF设计模式
     

GoF的种类

接下来将介绍下面几种模式

GoF的Template Method模式
GoF的Factory Method模式
GoF的Observer模式
GoF的Composite模式
        


http://www.ppmy.cn/embedded/148236.html

相关文章

python实现基于RPC协议的接口自动化测试

01 什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用协议是一个用于建立适当框架的协议。从本质上讲&#xff0c;它使一台机器上的程序能够调用另一台机器上的子程序&#xff0c;而不会意识到它是远程的。 RPC 是一种软件通信协议&#xff0c;一个程…

ubuntu22.04 nginx配置下载目录,亲测成功

安装nginx ubuntu最简单&#xff0c;apt安装即可 apt install nginx 配置文件 文件都在目录下 /etc/nginx/添加内容 修改/ etc/nginx/sites-available/default &#xff0c; 注意这里不是nginx.conf&#xff0c;直接修改nginx.conf不奏效 location /downloads { …

Docker快速安装Tomcat

安装docker的教程&#xff0c;参考文章&#xff1a; Linux安装Docker-CSDN博客 在linux中安装Tomcat&#xff0c;步骤如下&#xff1a; 1.从远程仓库中拉取Tomcat镜像 docker pull tomcat 如果拉取很慢&#xff0c;通过更换下载镜像的地址便可解决&#xff0c;不过镜像地址可能…

【集合】Java 8 - Stream API 17种常用操作与案例详解

文章目录 Java8 Stream API 17种常用操作与案例详解1. collect()&#xff1a;将流中的元素收集到集合中2. filter()&#xff1a;根据条件过滤流中的元素3. map()&#xff1a;元素映射为另一个值4. forEach()&#xff1a;对流中的元素执行操作5. flatMap()&#xff1a;将流中的元…

websocket的心跳检测和断线重连

心跳检测和断线重连可以通过WebSocket的事件和属性来实现。以下是一个简单的JavaScript示例&#xff0c;使用WebSocket API实现心跳检测和断线重连的功能&#xff1a; let ws;function connectWebSocket() {ws new WebSocket(ws://your-websocket-server-url);ws.onopen fun…

智能座舱进阶-应用框架层-Handler分析

首先明确&#xff0c; handler是为了解决单进程内的线程之间的通信问题的。我也需要理解Android系统中进程和线程的概念&#xff0c; APP启动后&#xff0c;会有三四个线程启动起来&#xff0c;其中&#xff0c;有一条mainUITread的线程&#xff0c;专门用来处理UI事件&#xf…

vscode 版本升级导致yarn不能使用

原由 1.由于之前开发版本是1.66 &#xff0c;现在升级到1.96 2. 采用mvm 管理多个node版本 3. 旧的node版本卸载16.xxxx 启动旧项目 报以下异常 yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&…

QT实战经验总结 连载中

QT实战经验总结 在看书系统学习后&#xff0c;就开始实战了&#xff0c;会遇到很多问题1.信号和槽的思考2.在python 或 C 代码中&#xff0c;对 QML 代码中控件的调用3.关于在一个窗口上不断打开新窗口 在看书系统学习后&#xff0c;就开始实战了&#xff0c;会遇到很多问题 p…