当前位置: 首页 > news >正文

软件设计模式

1.UML

1.1类图表示法

uml类图中,类使用包含类名、属性、方法

属性或方法前的加好和减号表示了这个方法的可见性,可见性的符号有三种:

+表示public

-表示private

#表示protected

1.2 类与类之间关系

关联关系

 单向关联

双向关系

自关联

聚合关系

聚合关系是关联关系的一种,是强关联关系,是整体和部分的关系

聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,成员对象可以脱离整体对象独立存在。带空心菱形的实线来表示

组合关系

组合关系表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系

组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,部分对象也将不存在,部分对象不能脱离整体对象存在,用带实心菱形的实线来实现

依赖关系

依赖关系是一种使用关系,是对象之间耦合度最弱的一种关联关系,是临时性的关联,在代码中,某个类的方法,通过局部变量、方法的参数或静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责;依赖关系用带箭头的虚线表示,箭头指向被依赖的类

继承关系

是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系;使用空心三角箭头实线表示,箭头从子类指向父类

实现关系

是接口与实现类之间的关系,类中的操作实线了接口中所声明的所有的抽象操作;实现关系用带空心三角箭头虚线来表示,箭头从实现类指向接口

2.软件设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性

开闭原则

对扩展开发,对修改关闭

要想达到这样的效果,需要使用接口和抽象类

里式代换原则

里式代换原则:任何基类可以出现的地方,子类一定可以出现。通俗理解为:子类可以扩展父类的功能,但不能改变父类原有的功能。换句话,子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法

依赖倒转原则

高层模块不应该依赖底层模块,两者都应该依赖其抽象

抽象不应该依赖细节,细节应该依赖抽象

简单的说就是要求对抽象进行编程,不要对实现进行编程,这样降低了客户与实现模块间的耦合

3.创建型模式

用于描述"怎样创建对象",主要特点“将对象的创建与使用分离”

提供了单例、原型、工厂方法、抽象工厂、建造者

4.结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构,分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足"合成复用原则",所以对象结构模式比类结构模式具有更大的灵活性。

结构型模式7种:代理模式、适配器模式、装饰着模式、桥接模式、外观模式、组合模式、享元模式

4.1 代理模式

由于某些原因需要给某对象提供一个代理以控制对该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。java中的代理按照代理了生成时机不同分为静态代理和动态代理。静态代理在编译器就生成,动态代理在java运行时动态生成。动态代理又有jdk代理和cglib代理。

5.行为模式

用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务

行为型模式

相关文章:

软件设计模式

1.UML 1.1类图表示法 uml类图中,类使用包含类名、属性、方法 属性或方法前的加好和减号表示了这个方法的可见性,可见性的符号有三种: 表示public -表示private #表示protected 1.2 类与类之间关系 关联关系 单向关联 双向关系 自关联 聚合关…...

Git常见场景命令总结

1、查看远程仓库标签/分支 git ls-remote --tags origin git ls-remote --heads origin2、删除远程仓库标签/分支 git push origin --delete refs/tags/my_tag3、删除本地标签/分支 git branch -d <branch_name>4、修改代码但未add回滚 git checkout -- <file1>…...

面向对象的分析与设计(精品课程)第一章作业

面向对象的分析与设计&#xff08;精品课程&#xff09;第一章作业 一. 单选题&#xff08;共2题&#xff0c;18分&#xff09;二. 多选题&#xff08;共3题&#xff0c;27分&#xff09;三. 填空题&#xff08;共5题&#xff0c;45分&#xff09;四. 简答题&#xff08;共1题&…...

要使用API接口获取淘宝电商平台的数据,您需要遵循以下步骤:

了解API文档和规范&#xff1a;首先&#xff0c;您需要了解淘宝电商平台的API文档和规范&#xff0c;以确定可用的接口和参数。您可以在淘宝开放平台的官方文档中找到这些信息。注册并获取API密钥&#xff1a;在使用API之前&#xff0c;您需要在淘宝开放平台注册并获取API密钥。…...

vue中动态style(如何动态修改伪元素样式)

vue中动态style(如何动态修改伪元素样式)_vue怎么在行内给伪元素加样式_爱上星星的鲸鱼的博客-CSDN博客...

碳当量及相关指数

声明 本文是学习GB-T 713.1-2023 承压设备用钢板和钢带 第1部分&#xff1a;一般要求. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了承压设备用钢板和钢带的牌号表示方法、订货内容、尺寸、外形、重量、技术要求、检验 规则、…...

MySQL数据库入门到精通

介绍 终于将黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括这个视频看完了&#xff0c;发现自己之前掌握的数据库知识只能算是个入门&#xff0c;现在将这个视频的笔记整理一下&#xff0c;方便复习。准备按基础篇&#xff0c;进阶篇&…...

【TA】OP-TEE demo学习

前言&#xff1a;工作原因接触Apple软件需要搭建TA环境&#xff0c;涉及到OP-TEE&#xff0c;学习一下 OP-TEE&#xff08;Open Portable Trusted Execution Environment&#xff09;是一个开放源代码的可信执行环境&#xff08;TEE&#xff09;软件框架。它提供了安全的执行环…...

什么是实时操作系统(UCOS简介)

uC/OS-III官网&#xff1a;Home Page - Weston Embedded Solutions 一、裸机与RTOS介绍 下面我将从不同方面阐述裸机与试试操作系统的区别&#xff0c;从而进一步介绍裸机和实时操作系统 定义&#xff1a; 裸机&#xff1a;裸机指的是没有任何操作系统或软件层的硬件系统。在…...

软考-操作系统

/4操作系统的作用 进程 进程的概念 进程是程序的一次执行过程&#xff0c;没有程序就没有进程 进程可有多个线程&#xff0c;线程可共享资源 进程的两个基本属性&#xff1a; 可拥有资源的独立单位可独立调度和分配资源的基本单位 线程可共享&#xff1a; 内存地址空间代码…...

【EasyExcel】excel表格的导入和导出

【EasyExcel】excel表格的导入和导出 【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel&#xff08;1&#xff09;最简单的写(方式一)&#xff08;2&#xff09;最简单的写(方式二)&#xff08;3&#xff09;排除模型中的属性字段&#xff08;4&…...

Unity shader内置standard代码解析

最近有相关需求制作&#xff0c;所以这里编写一个文档&#xff0c;方便后续的流程查看。 下载源码 由于unity内置的shader是无法查看源码的&#xff0c;你需要去官网下载对应版本内置源码查看 在引擎下载那里&#xff0c;会有一个Built in Shaders&#xff0c;下载 打开以后…...

Redis 有序集合操作实战(全)

目录 ZADD 加入有序集 ZCARD 取成员数量 ZCOUNT 计算区间成员数量 ZINCRBY 运算 ZRANGE 取区间成员(升序) ZRANGEBYSCORE 按分值排序取成员 ZRANK 取成员排名 ZREM 移除成员 ZREMRANGEBYRANK 按位置区间批量移除 ZREMRANGEBYSCORE 按分值区间移除 ZREVRANGE 取区间成…...

化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设

化工DCS/SIS/MIS系统时钟同步&#xff08;NTP服务器&#xff09;建设 化工DCS/SIS/MIS系统时钟同步&#xff08;NTP服务器&#xff09;建设 目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态。 随着计算机网络应用的不断涌现&#xff0c;计算机的时间同步问…...

计算机网络工程师多选题系列——操作系统

得多选者得天下啊同志们&#xff01; 摘录按照章节顺序&#xff0c;但事实上各章节习题有交叉。 1 操作系统 1.1 操作系统概论 操作系统的主要功能&#xff1a;进程管理、存储管理、文件管理、设备管理和用户接口。 操作系统的主要功能——设备管理&#xff1a;为用户程序提…...

matlab读写json文件

Background 通常&#xff0c;在matlab中使用mat文件进行数据存储。MAT文件是MATLAB中用来存储数据的二进制文件格式。MAT文件可以包含各种数据类型&#xff0c;包括数字、矩阵、向量、结构体、字符和函数等。但是&#xff0c;当和其他语言有交互时&#xff0c;mat文件会不太方便…...

数据治理-数据仓库环境

数据仓库环境包括一系列组织起来以满足企业需求的架构组件&#xff0c;从源系统流动到数据暂存区&#xff0c;数据可以在这里被清晰&#xff0c;当数据集成并存储在数据仓库或操作数据存储中时&#xff0c;可以对其进行补充丰富。在数据仓库中&#xff0c;可以通过数据集市或数…...

DevOps与CI/CD常见面试问题汇总

01 您能告诉我们DevOps和Agile(敏捷)之间的根本区别吗&#xff1f; 答&#xff1a;尽管DevOps与敏捷方法&#xff08;这是最流行的SDLC[Software Development Life Cycle]方法之一&#xff09;有一些相似之处&#xff0c;但两者在软件开发方面都是根本不同的方法。以下是两者之…...

OJ练习第178题——收集树中金币

收集树中金币 力扣链接&#xff1a;2603. 收集树中金币 题目描述 给你一个 n 个节点的无向无根树&#xff0c;节点编号从 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间有一条边。再给…...

uni-app打包iOS ipa文件后不上架App store为用户提供下载解决过程记录

写在前面&#xff0c;itms-services协议是什么 itms-services协议是苹果提供的一种让iOS应用在用户设备上无线安装或升级的协议。 具体来说: itms-services表示iOS应用无线安装服务的URL方案,格式为:itms-services://?actiondownload-manifest&urlMANIFEST_URL其中MANIF…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...