设计模式(十五)-面向对象概念

news2024/11/27 21:05:42

软件设计(十五)-UML建模(下)icon-default.png?t=N176https://blog.csdn.net/ke1ying/article/details/129152487

一、设计原则

1、单一职责:设计目的单一的类。

2、开放-封闭原则:对扩展开放,对修改关闭。

3、里氏替换原则:子类可代替父类。

4、依赖倒置:要依赖与接口,而不是具体实现,针对接口编程。

5、接口隔离:多个接口之间不要相互影响,多个专门接口比单个接口要好。

6、迪米特原则:一个对象对其他对象尽可能少的了解。

静态图:类图、对象图、包图、组合结构图、构件图、部署图、制品图。

动态图:用例图、顺序图、通信图(协作图)、定时图、状态图、活动图。

二、设计模式分类

设计模式基本概念

架构模式:整体全局来设计,高层决策,例如C/S结构就属于架构模式。

设计模式:主要关注软件系统的设计,与具体语言实现无关。

惯用法:最底层模式,关注软件设计与实现,与语言相关。

主要分为 创建型模式、结构型模式、行为型模式

  1. 创建型模式

抽象工厂:提供一个接口,创建一系列相关或相互依赖的对象。

原型:用原型实例指定创建对象的类型,并通过拷贝创建新对象。(为什么不new而是拷贝,效率更高,拷贝是直接在内存,new是在创建对象)

单例:全局保证一个实例。

工厂模式、构建器模式。

  1. 结构型模式

适配器模式:讲一个类转成其他可以使用的接口,方便协同工作。(转换接口

桥接:将类的抽象和实现部分分离出来,可以独立变化。(继承树拆分 就属于桥接模式

装饰模式:动态的给一个对象额外增加职责。(附加职责

外观、组合、享元模式、代理模式。

  1. 行为模式

职责链模式:减少请求发送者和接受者之间的耦合度,一个请求者有多个接收者,把接收者链接成一个链。(传递职责 财务审批的时候,每次员工不需要多次去申请流程,只需要申请一次,然后总监,主管,hr形成一个链依次审批

命令模式:将一个请求封装成一个对象,可以撤销请求,可以不同的请求对客户进行参数化,可以记录命令日志。(请求封装成对象,可撤销

解释器模式:解释相应的语言,进行相关处理操作。

迭代器:提供一个方法按顺序访问一个聚合对象中的各个元素。

中介者模式:用一个对象来封装两者一系列的交互,降低耦合程度。(比如引入中间件)

备忘录:开辟一个空间存对象相关信息,方便恢复。

观察者:一对多的对应关系,一个改变,其他的跟着改变。

状态模式:允许一个对象在其内部状态改变时改变他的行为。

策略模式:定义一系列算法,把他们一个个封装起来,并且使他们之间可以相互替换。(多方案切换

访问者模式:在不改变类的前提下,对这些元素进行操作。

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

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

相关文章

微服务架构中的缓存设计浅析

在微服务架构中,缓存中间件越来越成为不可或缺的组件,下面聊聊微服务环境下的缓存设计。 1、简介 缓存在应用软件架构中是提高性能最直接的方式,如下 假设应用程序将数据存储在Mysql中,众所周知Mysql会将数据存储在硬盘上以防止…

git 拉取远程分支到本地

目录:***!本小作者,是将终端和Git的可视化插件结合使用,刚接触的可以自习看一下,内容简单,避免弯路!***一,简单了解远程分支1,连接远程:2,提交&am…

SpringBoot使用validator进行参数校验

Validated、Valid和BindingResultBean Validation是Java定义的一套基于注解的数据校验规范,比如Null、NotNull、Pattern等,它们位于 javax.validation.constraints这个包下。hibernate validator是对这个规范的实现,并增加了一些其他校验注解…

业务流程建模标注(BPMN)详细介绍

1、基本信息摘要:该文章的目的是对BPMN(Business Process Modeling Notation)的概要描述和介绍。描述基本的BPMN符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)2、BPMN简介2.1概述该文章的目的是对BPMN(Bu…

pytest之fixture用法

特点及优势1、命令灵活:对于setup.teardown,可以不起这两个名字2、数据共享:在conftest.py配置里写的方法可以实现数据共享,不需要import导入,可以跨文件共享3、scope的层次及神奇的yield组合相当于各种setup和teardow…

MySQL —— 表的操作

文章目录1. 创建表2. 查看表结构3. 修改表3.1 向表中插入数据3.2删除表中的数据3.3 修改表的性质3.3.1 添加字段3.3.2 修改字段的长度3.3.3 删除字段3.3.4 修改字段名3.3.5 修改表名4. 删除表5. 备份表前言: 本文会详细的讲解,在MySQL中表的操作。1. 创建…

Linux基础命令-uname显示系统内核信息

前言 这个命令主要是显示系统内核的相关信息,一般需要查看内核信息才会使用到这个命令,一起来看看吧。 一 命令的介绍 uname命令来自于英文词组“Unix name”的缩写,其功能是用于查看系统主机名、内核及硬件架构等信息。如果不加任务参数&am…

UVM实战(张强)-- UVM中的寄存器模型

目录一.整体的设计结构图二.各个组件代码详解2.1 DUT2.2 bus_driver2.3 bus_sequencer2.4 bus_monitor2.5 bus_agent2.6 bus_transaction2.7 bus_if2.8 my_if2.9 my_transaction2.10 my_sequencer2.11 my_driver2.12 my_monitor2.13 my_agent2.14 my_scoreboard2.15 my_env2.16…

龙芯GS232(MIPS 32)架构cache管理笔记

1 mips32架构 MIPS架构是一种基于精简指令集(Reduced Instruction Set Computer,RISC)的计算机处理器架构。MIPS架构由MIPS Technologies公司在1981年开发,并在1984年发布了第一款MIPS处理器。 MIPS架构的特点包括: …

Alkyne choline,685082-61-5,炔基胆碱,炔基可通过铜催化的点击化学进行修饰和共轭

1、基础产品数据(Basic Product Data):CAS号:685082-61-5中文名:炔胆碱,炔基胆碱英文名:Alkyne-choline ,Alkyne choline2、详细产品数据(Detailed Product Data&#xf…

深入讲解CFS组调度!(下)

接上文深入讲解CFS组调度!(上) 六、task group时间片 6.1. 时间片分配 若使能CFS组调度会从上到下逐层通过权重比例来分配上层分得的时间片,分配函数是sched_slice()。但是从上到下不便于遍历,因此改为从下到上进行…

盘点全网好评最多的7款团队协同软件,你用过哪款?

能亲自带团队管理项目当然是一件开心和兴奋的事,但是突然成为团队负责人后开始不大适应。如何转换角色,还有自己和团队成员之间在心理、行为等方面的互动也变得很敏感。新手领导上任的过程,是团队秩序再造的过程;是晋升者个人职业…

Python----------字符串

1.转义字符 注:转义字符放在你所想效果字符前 2.原始字符串 print(r"D:\three\two\one\now") ->D:\three\two\one\now注: 在使用原始字符串时,转义字符不再有效,只能当作原始的字符,每个字符都没有特殊…

MySQL(一)基础使用

MySQL基础使用概念数据库相关概念关系型数据库SQL通用语法SQL分类DDL数据库操作表操作表操作-数据类型表操作-修改表操作-删除DML添加数据修改数据删除数据DQL基本查询(不带任何条件)查询多个字段:字段设置别名去除重复记录条件查询&#xff…

2月第3周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜数据UP主充电榜排行榜&…

EasyExcel 几十万导入报错问题——java.lang.NoClassDefFoundError

EasyExcel 报错 NoClassDefFoundError org/ehcache/config/builders/CacheManagerBuilder 特此郑重声明!该文章是原创作品,小编编写实属不易 ,帮忙点赞关注一下~转载小伙伴请注明出处! EasyExcel 导入几十万数据报错 今天在执行…

【java实现Word模板导出】Xdocreport和Freemaker

如果只是生成简单的word文件的话可以使用 Hutool 上手简单使用方便。 但如果需要导出内容比较复杂的word文件的话用那个就不合适了,这时候就需要Xdocreport这玩意了。 制作模板 新建一个word文档在需要插入变量的地方使用快捷键 Crtl F9 来生成一个域 然后右键单…

【软件工具】Source Insight 4.0编辑keil工程代码

0.前言 最近在学习过程中,发现诸多课程老师均使用Source Insight 4.0进行开发演示,为了方便课程的学习,也为了提高个人开发水平及效率,故学习Source Insight 4.0软件,此文章主要作为软件使用的流程总结,同…

第十一章 - 模糊匹配(like)、正则匹配(REGEXP)、文本处理函数、时间处理函数

第十一章 - 模糊匹配(like)、正则匹配(REGEXP)、文本处理函数、时间处理函数模糊匹配和正则匹配like%通配符_通配符REGEXP 正则匹配文本拼接concat()substring()substring_index()一些文本处理函数时间处理…

Autosar MCAL-ADC配置PWM硬件触发采样

文章目录前言ADC配置AdcGroupRequestSourceAdcGroupTriggSrcAdcHwExtTrigSelectAdcHwGatePinAdcGeneral-AdcHwTriggerApiAdcHwGateSignalAdcHwTrigSignalAdcHwTrigTypeGtmGtmConnectionsPWM实际使用总结前言 在实际项目开发过程中,关于ADC采样,大部分使…