好的网站推荐一个/百度旗下有哪些app

好的网站推荐一个,百度旗下有哪些app,合肥网站建设网站推广津学院,简单的网站类型有哪些内容设计模式 设计模式的概念 设计模式最初用于建筑领域的设计中。 软件的设计模式,又称设计模式,是一套被反复使用,多数人知道的,经过分类编目的,代码设计经验的总结。 它描述了在软件设计过程中的一些不断重复发生的…

设计模式

设计模式的概念

设计模式最初用于建筑领域的设计中。

软件的设计模式,又称设计模式,是一套被反复使用,多数人知道的,经过分类编目的,代码设计经验的总结。

它描述了在软件设计过程中的一些不断重复发生的问题,以及如何解决这些问题。

它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。

设计模式的作用

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性,继承性和多态性记忆类的关联关系和组合关系的充分理解。

正确使用设计模式具有以下优点:

  1. 可以提高程序员的思维能力,编程能力和设计能力。
  2. 使程序设计更加标准化,使软件开发效率大大提高。
  3. 使设计的代码可重用性高,可读性强,可靠性高,灵活性好,可维护性强。
  4. 能够更好的去理解源码架构。

如果需要设计大型项目架构,必须考虑增加新功能的代码变动成本,要保证新加入的功能不影响以前的功能。

在这里插入图片描述

建模语言

统一建模语言(Unifiled Modeling Language)简称UML是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的结果。

UML图:通过不同的图形和符号来描述软件模型以及各个元素之间的关系。

类图:展示模型的静态结构,特别是模型中存在的类,类的内部结构以及它们与其他类的关系等。

在这里插入图片描述

类是指具有相同属性,方法,关系的对象的抽象,封装了数据和行为,是OOP(面向对象程序设计)的基础,具有封装性,继承性和多态性等三大特性。

在UML中,类使用包含类名,属性和操作且带有分割线的矩形表示。

  1. 类名是一个字符串,例如:Student,Teacher
  2. 属性是指类的特性,即类的成员变量。

UML按照以下格式:

[可见性]属性名:类型[=默认值]
例如:-name:String
注意:“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私
有(Private)、受保护(Protected)和朋友(Friendly)4 种,在类图中分别
用符号+、-、#、~表示。

3.操作是类的任意一个实例对象都可以使用的行为,是类的成员方法

UML按照以下格式:

[可见性]名称(参数列表)[:返回类型]
例如:+display():void。

学生类的UML表示如下:

在这里插入图片描述

接口

接口是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。

它包含抽象操作,但不包含属性。它描述了类或组件对外可见的

UML表示如下:

在这里插入图片描述

类之间的关系

在软件系统中,类不是孤立的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML中类图有以下几种关系:

依赖关系,关联关系,聚合关系,组合关系,泛化关系,实现关系。

其中泛化和实现的耦合度相等,它们是最强的。

1.依赖关系

依赖关系指的是一种临时使用的关联,是耦合度最低的关系。

某个类的方法通过局部变量,方法的参数或者对静态方法的临时调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。

在UML中依赖关系使用带箭头的虚线表示,剪头从使用类指向被依赖类。

下图展示人通过手机的语言传送方法打电话

在这里插入图片描述

2.关联关系

是对象之间的引用关系。

用于表示一类对象与另一类对象之间的联系,如老师和学生,师傅和徒弟等。

关联关系是类与类之间最常用的一种关系,氛围一般关联关系,聚合关系和组合关系。

关联可以分为单向关联,双向关联,自关联。

单向关联:

在这里插入图片描述

双向关联:

在这里插入图片描述

所谓双向关联就是双方各自持有对方类型的成员变量。

自关联:

在这里插入图片描述

3.聚合关系

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

聚合关系通过成员对象实现,其中成员对象时整体对象的一部分,但成员对象可脱离整体对象独立存在。例如学校和老师的关系,若学校消失老师独立存在

聚合关系在UML图中用空心菱形的实线表示,菱形指向整体。

在这里插入图片描述

4.组合关系

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

在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,部分对象也将不复存在,部分对象无法脱离整体对象而存在。例如头和嘴的关系。

在UML图中组合关系使用实心菱形实线表示:

在这里插入图片描述

5.继承关系

继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与字类之间的关系,是一种继承关系,是is-a的关系。

在UML图中,继承关系使用空心三角剪头实线表示,剪头从子类指向父类,在代码实现时,使用面向对象的继承机制来实现继承关系。

例如下图:

在这里插入图片描述

6.实现关系

实现关系是接口和实现类之间的关系。

在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。

在UMl类图中,实现关系使用带空心三角剪头的虚线表示

如下图:

在这里插入图片描述

面向对象设计原则

单一职责

单一职责原则是最简单的面向对象设计原则,用于控制类的粒度大小。

对于单一职责原则,可以理解为一个类只负责一个功能领域中的相应职责,即一个类不要负责太多杂乱的工作。

在软件系统中,如果一个类继承的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或已知这个类完成其他职责的能力,这种耦合会导致一个脆弱的设计。

单一职责原则是实现高内聚,低耦合的指导方针。

以项目开发为例,如果项目组成员每个人的职责都很明确,可以专心开发自己负责的板块,那么项目成功就会相对较高,反之则较低

在这里插入图片描述

开闭原则

开闭原则指的是对拓展开放,对修改封闭。

在程序需要进行拓展时,不能去修改原有的代码,实现一个热插拔的效果。

为了使程序的拓展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。

因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。

而软件中易变的细节可以中抽象派生出来的实现类来拓展。

在这里插入图片描述

依赖倒置

上层模块不应该依赖低层模块,它们都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。

核心思想:面向接口,不面向实现编程。

抽象指的是抽象类或接口,细节指的是实现类。

使用接口或抽象类制定好规范和契约,不设计任何具体的操作,把展现细节的人物交给它们的实现类完成。

依赖倒置原则是实现开闭原则的重要途径之一,降低了类与类模块之间的耦合。

在这里插入图片描述

接口隔离

使用多个接口,而不使用单一的接口,不强迫新功能实现不同的方法。

在这里插入图片描述

组合/聚合复用原则

优先使用组合/聚合,使系统更加灵活,其次才考虑继承,达到复用的目的.

一般而言,如果两个类之间是"Has-A"关系应使用组合或聚合,如果是"Is-A"关系使用继承

里氏替换原则

使用继承时若父类的方法是非抽象的,那么子类继承父类并对父类中的非抽象方法进行重写时要注意,若使用父类的时候换成子类对象,由于子类对象重写的父类方法,从而导致有可能实现不相同导致结果不对

里氏替换原则的提出

1987年麻省理工计算机科学实验室思里科夫女士在面向对象技术的高峰会议上发表的文章《数据抽象和层次》中提出,她表明:挤成必须保证超类所拥有的性质在子类中仍然成立。

里氏替换原则主要阐述了有关挤成的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,使用继承时应该避免哪些问题。

里氏替换原则的定义

所有使用父类的地方必须能透明地使用其子类的对象。

在软件中将一个基类对象替换成它的子类对象时程序将不会产生任何错误和异常

简单来说,任何基类可以出现的地方,字类一定可以出现,所以字类可以拓展父类的中能,但不能改变父类原有的功能。

也就是说子类继承父类时,除了添加新的方法完成新增功能外,尽量不要重写父类方法,如果重写父类的方法,程序运行会发生出错概率。如果一定要用多态,那么父类可以设计成抽象接口。

历史替换原则的作用

它是功能正确性的保证。
加强程序的健壮性,提高程序的维护性降低需求变更时引入的风险

迪米特原则

只和“朋友”交谈,不和“陌生人”说话。

两个类之间如果没有直接的联系,那么就不要相互之间调用,可以通过一个第三方进行调用。

例如:明星,公司,粉丝,经纪人之间的交流

可以通过经纪人和明星,公司,粉丝分别进行接触,交流

总结

设计原则的核心思想

找出应用中可能需要变化之处,独立出来,不要和不需要变化的代码混在一起

针对抽象编程,而不是针对程序编程

为了交互对象的松耦合设计而努力

遵循设计原则;为了让程序高内聚,低耦合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker - 切换源 (Linux / macOS)

文章目录 Linux 系统macOS 系统 Linux 系统 修改配置文件:/etc/docker/daemon.json "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]验证是否修改成功: docker info重启 …

RocketMQ的安装及配置(windows)

1. 环境准备 JDK需要先安装好。 1. RocketMQ是用Java语言写的,所以需要JDK的支持。2. 下载RocketMQ 建议下载这个低版本的 https://rocketmq.apache.org/release-notes/2020/12/21/4.8.0/ 下载之后解压即可,目录结构如下: 3. 配置RocketM…

【运维自动化-标准运维】如何实现一个最简单的流程编排

流程编排是标准运维最核心的功能,通过将不同功能的原子插件在画布上可视化的拖拽编排,可以实现各种不同场景的跨系统工作流。标准运维流程 根据实际运维操作场景梳理出来的操作步骤,通过不同的流转逻辑(并行、分支、条件并行&…

性能测试之grafana展示jmeter测试指标与主机监控

性能测试之grafana展示jmeter测试指标与主机监控 背景 ​ 公司新的项目准备开展性能测试,之前性能监控主要使用的jmeter的插件jpgc-Transactions per Second 与 jpgc- Response Times Over Time 与 jpgc - Active Threads Over Time等等插件监控性能指标结果,PerfMon Metrics…

1~2 课程简介+ESP32-IDF环境搭建(虚拟机Linux环境下)

哔站“宸芯IOT”视频链接 一、课程内容介绍 1.什么是ESP32 ESP32是集成2.4GHz Wi-Fi和蓝牙双模的单芯片方案,具有超高的射频性能、稳定性、通用性和可靠性,以及超低的功耗,满足不同的功耗需求,适用于各种应用场景。ESP32是ESP8…

YOLOv11小白的进击之路(九)创新YOLO11损失函数之NWD损失函数源码解读

之前的博客也有对YOLO11的损失函数进行过源码分析,可以参考:YOLOv11小白的进击之路(六)创新YOLO的iou及损失函数时的源码分析_yolov11的损失函数是什么-CSDN博客最近在做小目标检测的时候注意到了NWD损失函数,这里对其…

VLN 论文精读(四)Dynamic Path Navigation for Motion Agents with LLM Reasoning

这篇笔记用来描述2025年发表在arxiv上的一篇有关VLN领域的论文,由港科大和达特茅斯大学联合发布,其核心思想有以下几点: 将3D环境转化为2D平面;2D平面中障碍物分布、机器人起点与终点信息用稀疏矩阵形式进行描述;与LL…

vue3之写一个aichat ----vite.config.js

vite.config.js的CSS配置 postcss-pxtorem 开发响应式网页的时候需要用到postcss-pxtorem amfe-flexible amfe-flexible是由阿里团队开发的一个库,它可以根据设备的屏幕宽度去动态调整HTML根元素()的字体大小,这意味着无论用户使用什么尺寸的设备访问你…

宝石PDF,全新 PC 版本,全部免费

宝石PDF已经运行 3 年时间,有客户端,小程序,一直未上 PC 版本,随着客户端功能升级的不及时,很多用户建议上 PC 版本。但是飞哥一直忙,这不终于给上了。 同时系统的名称也从 “PDF云转换”改为“宝石PDF”&…

HTML课后实践

实验一 【实验原理】 在搜索引擎的文本分析中,标题的信息权重要比正文的大,所以标题的样式非常重要。本实验通过把标题标记和常规文本进行对比输出,掌握标题标签的用法。在网页中,有时需要为文字设置粗体、斜体或下划线效果&#…

【紫光同创FPGA开发常用工具】FPGACPLD的下载与固化

文档内容适配技术问题说明(非正文): 1、FPGA&CPLD如何下载位流文件; 2、FPGA外部flash如何固化位流文件; 3、PDS软件烧录界面如何新增用户flash; 4、CPLD内部flash如何固化位流文件; F…

塔能智慧物联节能方案:点亮城市,赋能工厂

在全球积极倡导节能减排、绿色发展的时代背景下,塔能(江苏)科技有限公司凭借其创新的智慧物联节能一体化解决方案,在城市照明和工厂节能领域取得了显著成果。该方案不仅为城市的夜晚带来了明亮且节能的照明,还为工厂的…

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点 这里写目录标题 Python自动点击器开发教程 - 支持键盘连按和鼠标连点项目介绍开发环境安装依赖核心代码解析1. 键盘模拟实现2. 鼠标点击实现 开发要点使用说明注意事项优化建议打包发布项目源码开发心得参考资料成品工具 项…

Cursor插件市场打不开解决

问题现象: cursor搜索插件的时候提示错误,无法搜索安装插件 error while fetching extensions.failed to fetch 问题原因 cursor默认安装使用的并不是vs code的插件市场,国内网络有时候打不开 解决 修改插件市场地址并重启cursor 打开cur…

python-leetcode 54.全排列

题目: 给定不含重复数字的数组nums,返回其所有可能的全排列,可以按任意顺序返回答案 回溯法 一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通…

华为中小型企业项目案例

实验目的(1) 熟悉华为交换机和路由器的应用场景 (2) 掌握华为交换机和路由器的配置方法 实验拓扑实验拓扑如图所示。 华为中小型企业项目案例拓扑图 实验配置市场部和技术部的配置创建VLANLSW1的配置 [LSW1]vlan batch 10 20 [LSW1]q…

深度学习-简介

一、几个概念 (1)what is ai including? 看一张图: 这里注意机器学习和深度学习的关系 (2)机器学习和模式识别有什么区别? 和机器学习同领域的有一个词叫做模式识别,二者有什么区别呢? 机…

Unity小框架之单例模式基类

单例模式(Singleton Pattern)是一种常用的创建型设计模式,其核心目标是确保一个类只有一个实例,并提供一个全局访问点。它常用于需要控制资源访问、共享配置或管理全局状态的场景(如数据库连接池、日志管理器、应用配置…

安装 Powerlevel10k 及 Oh My Zsh 的使用

1. 简介 Powerlevel10k 是 Oh My Zsh 最流行的终端主题,它不仅美观,还提供 Git 状态显示、命令执行时间、网络状态、Python 虚拟环境指示等 实用功能。相比其他主题,Powerlevel10k 速度更快、可定制性更强。 本教程将详细介绍如何安装 Powe…

在IDEA中连接达梦数据库:详细配置指南

达梦数据库(DM Database)作为国产关系型数据库的代表,广泛应用于企业级系统开发。本文将详细介绍如何在IntelliJ IDEA中配置并连接达梦数据库,助力开发者高效完成数据库开发工作。 准备工作 1. 下载达梦JDBC驱动 访问达梦官方资…