设计模式、系统设计 record part01

技术路线:

工程师==》设计师==》分析师==》架构师

管理路线:

项目经理==》技术经理


工程师:

编程技术、测试技术

设计师:

工程师+设计技术

分析师:

设计师+分析技术

架构师:

分析师+架构技术


项目经理:

时间管理、风险管理、计划管理、过程管理、成本管理、人际沟通

技术经理:

项目经理+领导能力


具备技术素质:

高级技术人才

具备管理素质:

高级管理人才

同时具备技术、管理素质:

高级综合人才

参考书推荐:
head first design patterns(设计模式)
大话设计模式(Java溢彩加强版)
图解设计模式(中国工薪出版集团、人民邮电出版社)


在这里插入图片描述
在这里插入图片描述
前辈们代码设计经验,解决特定问题的一系列套路


好的、坏的设计特征
在这里插入图片描述
Robert C.Martin


向对的设计原则:
在这里插入图片描述


单一职责-Single Responsibility Principle:

在这里插入图片描述
职责《== 原因,应该有且仅有一个原因,引发类的变更
功能 约等于 方法
在这里插入图片描述
仅有一个原因,引发类的变更,
根据这个案例,如果只设计了一个类(员工类),那么,诱发类的变更就有很多原因,
比如要修改收银员的数据就要动这个员工类,要修改接待员的数据也要动这个员工类,要修改厨师的数据也要动这个员工类,所以出现了修改这个员工类会有n个原因,这就违反了SRP,
所以改进的方法是,为每一个工种设置一个类,这样,当要去动某个类的时候,只有一个与其对应的原因,
比如要修改餐服员的数据,只要去动餐服员的类就行,而不需要去管其他工种的类。
这里可以使用粒度这个词来描述职责,
多职责的粒度就是粗的,
单一职责的粒度就是细的。
在这里插入图片描述
DAO(Data Access Object)
把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间,
Entity层,顾名思义就是实体层,放置一个个实体,及其相应的set、get方法。
如果想要对数据库进行一些操作(比如说读取)的话,就要先写entity层
Service被称作业务逻辑层。
顾名思义,它处理逻辑上的业务,而不去考虑具体的实现
Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容
Util是utiliy的缩写,是一个多功能、基于工具的包。
如字符串处理、日期处理等,(建立数据库之间的连接),是通用的、与业务无关的,可以独立出来,可供其他项目使用
在这里插入图片描述


开闭-Open Closed Principle:

在这里插入图片描述
在这里插入图片描述
开闭的关键是抽象,
开闭是面向对象设计的终极目标,
开放是,对程序中需求频繁变化部分进行抽象。


里氏替代-Liskov Substitution Principles:
在这里插入图片描述
在这里插入图片描述


依赖倒置-Dependence Inversion Priciple:

在这里插入图片描述
依赖正置: 面向实现。模块之间的依赖,依赖的是实现类
依赖倒置: 面向抽象。模块之间的依赖,依赖抽象

在java中,抽象指的是接口或抽象类,细节就是具体的实现类。
依赖倒转的中心思想是面向接口编程(这句话的意思就是,把具体的 n 个实现抽象成 1 个接口,1:n 【 n 个实现类】到 1:1【 1 个接口】)
以抽象的基础搭建的架构比以细节为基础的架构要稳定的多,
抽象不应该依赖细节,细节应该依赖抽象
接口或抽象类,不涉及任何具体的操作,把展现细节的任务交给接口(或抽象类)的实现类去完成
在这里插入图片描述
september2024the26Thursday

依赖正置,一个类a去引用其他的类(类b、类c),
依赖倒置,针对类b、类c,抽象出来一个接口,类b、类c都继承(implement)这个接口,然后类a去引用这个接口,这就是倒置,
换句话说,打个比方,正置的时候,类a直接去和类b、类c吵架,倒置的时候,类a骂的是类b、类c的爸爸(接口),所以是倒过来的,是指爹骂(不是直接骂儿子,骂的是爹【引用类b、类c的爹】,让儿子自己去体会【类b、类c去 implement 继承它们的爹】)儿子,
正置的时候,类a要去挨个引用其他类,
倒置的时候,类a只引用一个接口,n多的其他类去自动继承接口,这样类a不用关心继承接口的有多少个其他类,只要这些类都继承类a引用的那个接口,类a就能使用这些个类。


接口分离-Interface Segregation Principle:

在这里插入图片描述
在这里插入图片描述
可以看到,上图中,将打电话、发短信、拍照三个方法集成到一起了,这时候,apple手机有能力使用它的三个功能,而老年机实际上并不需要拍照功能,但开发的时候是将三个功能集成到一起了,这时候,老年机用户就被迫依赖了一个并不需要的拍照方法,
解决办法:
把打电话、发短信、拍照做成3个接口,iPhone就调用3个接口,老年机就调用除了拍照以外的打电话、发电信这两个接口,
在这里插入图片描述
不要强迫老年机用户依赖他们并不需要的摄像头拍照方法,


迪米特-Law of Demeter:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,需要变动的模块的扩展会相对容易。
再举一个例子:
军队里面有元帅、军官和士兵,元帅认识军官,军官认识自己管辖的士兵。
要发动攻击,元帅不必直接对士兵下命令,只需要下命令给军官,再由军官将指令转发给所辖士兵即可。


合成复用-Composite Reuse Priciple:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面这个例子说的是,继承父类时能拿到父类的方法method1、method2,但是拿不到父类的其他子类的方法,因此是不能重用父类的子类的代码,
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
举个栗子:
我在csdn‘程序员胖虎’的博客里找到几个图,看起来比较好理解,如下:
继承
在这里插入图片描述
给继承加元素.
在这里插入图片描述
合成
在这里插入图片描述
给合成加元素,
在这里插入图片描述
合成的扩展性更好些。
找了一圈,‘程序员胖虎’的这个似乎更贴切些,咱们先用着,有时间我再研究研究,又更好的再来更新。
再来一个例子:
来自csdn‘这很张扬’的博客,下图是一个合成复用的图
在这里插入图片描述
下面是一个继承复用的图在这里插入图片描述
再举一个例子:
在这里插入图片描述
一个父类,如下:
在这里插入图片描述
父类里有两个方法,method1、method2,
子类1,如下:
在这里插入图片描述
复写了父类的method2,变成了它自己的方法method2
子类2,如下:
第3个子类,如下:
在这里插入图片描述
复写了父类的method1、method2,变成了自己的method1、method3,
最后,用一个测试类进行测试,如下:
在这里插入图片描述
测试类,结果如下:
在这里插入图片描述
最后这个例子不太好,给人感觉莫名其妙的,不妙不妙,我再想想,等有更好的例子再来更新。

September2024the26thWednesday

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

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

相关文章

数据结构 ——— 编写函数,删除有序数组中的重复项

目录 题目要求 代码实现 题目要求 一个升序排列的数组 nums ,要求原地删除重复出现的元素,使每个元素只出现一次,并返回删除后数组的新长度,元素的相对顺序应该保持一致 代码实现 代码演示: int removeDuplicate…

两步飞跃办公室,2024年常备远程控制神器,居家办公真轻松

现在科技发展得可快了,咱们的生活和工作都跟以前不一样了。2024 年,在家上班一点都不新鲜,好多人都这么干。在这个数字化的时代呀,有很多方便的工具出现。向日葵远程控制软件就是个好东西,能帮咱们高效地远程办公。想试…

探索 Midjourney 中文版:开启人工智能绘画新征程

Midjourney 中文版是专门为中国创作者精心打造的人工智能绘画神器。它打破了语言的壁垒,以熟悉的中文界面和指令输入方式,让每一个怀揣创意梦想的人都能轻松驾驭。无需再为复杂的英文指令而苦恼,在这里,你只需用中文表达心中的想象…

SOLIDWORKS 2025新版本揭秘 | 设计、协作和数据管理篇

除非另有说明,否则所有增强功能均适用于 3DEXPERIENCE SOLIDWORKS 和 SOLIDWORKS Cloud Services。 1|更髙效的协作和数据管理 直接从 SOLIDWORKS 访问社区,轻松与业界同行建立联系并开展协作。 利用实时通知时刻关注蕞新动态,…

【Mysql】Mysql常用图形管理工具

该图片是在Dos窗口中使用Mysql数据库管理系统。 1、简介 如果日常的开发和维护均在类似dos窗口中进行,对于编程者来书,上手就略微困难,增加了学习成本。我们一般使用MySQL图形管理工具来连接MySQL,然后在图形化界面上操作MySQL。…

电脑怎么安装打印机驱动_电脑安装打印机驱动多种方法

电脑怎么安装打印机驱动?许多人在购买新打印机或更换电脑时,常常会遇到安装打印机驱动的问题。正确安装打印机驱动程序不仅能确保打印机正常工作,还能提高打印效率,下面小编就教大家电脑安装打印机驱动多种方法。 电脑怎么安装打印…

三步教会你制作自己的Coze插件,不懂代码也玩得转 !

大家好,我是凡人。 是一个不黑、不吹、不跟风、有知识、有骨气的五好小号主。 最近有一位粉丝朋友和我抱怨,Coze商城里的插件用起来确实方便,但对于特殊情况想要做一些定向的数据获取却是比较麻烦,需要自己设计插件,…

证件照制作小程序源码

预览: 证件照制作小程序官方有推出对应的api接口,也有demo示例,大家有需要的可以直接拿 证件照规格列表 接口地址:https://api.zheyings.cn/item/list 请求方式:POST(application/x-www-form-urlencoded) 返回格式&…

千元护眼台灯测评:书客、明基、柏曼护眼台灯怎么样?

近年来,近视一直是全球范围内广泛存在的视力问题,特别是在中小学生群体中,佩戴眼镜的比例已经超过了50%。而青少年近视率不断攀升的原因之一是学习压力的增加,此外,不良的阅读姿势以及不适宜的照明条件等也是导致近视的…

一文读懂Ingress-Nginx以及实践攻略

一文读懂Ingress-Nginx以及实践攻略 目录 1 概念 1.1 什么是Ingress? 1.1.1 主要功能: 1.2 Ingress的组件1.3 什么是ingress-nginx1.4 ingress-nginx优点和限制1.5 版本兼容性矩阵 2 实践: Ingress nginx部署 2.1 使用helm部署ingress-ngin…

数字人直播违规原因究竟是什么?哪些技术可以解决?

随着人工智能时代的来临,以数字人直播为代表的技术应用逐渐被各大中小型企业引进,并成为了它们在直播板块降本增效的利器。不过,从目前的应用情况来看,不少企业都在使用数字人无人直播的过程中遭遇了违规封号的问题。在此背景下&a…

django开发流程3(轮播图)

1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…

10分钟制作一个简易的word模版

简易word模板制作。 简言 自用的一个word模版,平常套用其他格式的模板,常常将注意力转移到寻找word模版上,这里提供一个简易的word模版制作教程。 格式要求 (1)正文格式字体小四,中文宋体,西…

uniapp微信小程序,获取上一页面路由

在进入当前页面的时候,判断是不是从某个页面跳转过来的(一般是当前页面为公共页面是出现的),比如 A-->B C-->B ,那么 要在 C跳转到B页面的时候多个提示语什么的 而在A跳转到B时不需要,那么就要判断 上一页面的…

【C++】STL标准模板库容器set

🦄个人主页:修修修也 🎏所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 📌关联式容器set(集合)简介 📌set(集合)的使用 🎏set(集合)的模板参数列表 🎏set(集合)的构造函数 🎏set(集合)的迭代…

s5pv210开发板刷机,分区,SD卡,emmc,nand,fastboot刷机命令,刷uboot,kernel,system(二)

一、x210开发板的启动机制 SD/inand启动步骤: 第一层启动从通道0,SD0(inand/emmc)启动, 当(inand/emmc)启动做校验和时失败才会转为启动通道2,SD2(外接插入sd卡)。而我们做裸机实验时是通过SD2来提供裸机程序镜像的,因…

SQL - 函数

1. 操作类函数 这一类函数针对数据结构,表格进行筛选操作 1.1 GROUP BY 根据某个单一列中属性或者多个列对结果集进行分组 SELECT column1, SUM(column2) FROM table GROUP BY column1; 上述代码将所选择列进行column1中的属性分组,作为每一行的索引…

“WanFangAi论文写作:智能论文助手,让研究更高效,论文写作技巧

点击查看本科毕业论文怎么搞!【保姆级论文写作教程】 手把手教你从找文献到写作全流程 撰写论文是一个系统性的过程,需要一定的技巧和方法。即使没有经过正式的论文写作训练,大学生也可以通过以下步骤来学习如何写论文: ‌确定主题…

INTO:Web3世界的“价值引力场”

在Web3的宇宙中,一股强大的引力正在重塑整个数字世界的格局。这股引力,来自一个名为INTO的“超级连接器”。作为Web3社交领域的先锋,INTO正在用一种前所未有的方式重构整个产业链的价值体系。它不再满足于单一领域的创新,而是大胆…

u盘拷贝文件管控怎么设置?禁止往U盘拷贝文件的8种方法!(图文详解)

数字化时代,U盘作为便捷的数据存储与传输工具,其安全性不容忽视。 尤其在企业环境里,防止敏感数据通过U盘非法拷贝是保障信息安全的重要一环。 正所谓"小U盘大管控",本文将详细介绍8种禁止往U盘拷贝文件的方法&#xf…