软件构造复习第五章——S.O.L.I.D

复习到5.1老师讲了S.O.L.I.D,但是PPT上并没有准确的定义,我根据老师的讲述写下自己的理解

众所周知。Java搞程最基本的原则就是要追求高内聚和低精合的解决方案和代码模块设计,SOLID是面向对象设计和编程
中几个重要编码原则(Programming Pil)的首字母缩写。

缩写英文全称中文全称
SRPThe Single Responsibility Pinciple单一责任原则
OCPThe Open Closed Principle开放封闭原则
LSPThe Interface Segregation Principle里氏替换原则
ISPThe Interface Segregation Principle接口分离原则
DIPThe Dependency Inversion Principle依赖倒置原则

1.单一责任原则(SRP)

当需要修改某个类的时候原因有且只有一个。 换句话说就是让一个类只做一种类型责任。当这个类需要承当其他类型的责任的时候,就需要分解这个类。类被修改的几率很大, 因此应该专注于单-的功能。如果你把多个功能放在同一个类中。 功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新轮的测试来避免可能出现的问题,非常耗时耗力。
示例:
在这里插入图片描述

2.开放封闭原则(OCP)

软件实体应该是可扩展,而不可惨改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象,最难理解的一个。
(1)通过增加代码来扩展功能,而不是修改已经存在的代码。
(2)若客户模块和服务模块遵循同一个接口来设计,则客户模块可以不关心服务模块的类型,服务模块可以方便扩展服务(代码)。
(3)OCP支持替换的服务,而不用修改客户模块。

3.里氏替换原则(LSP)

当一个子类的实例应该能够替换任何其超类的实体时,它们之间才具有is-A关系客户模块不应关心服务模块的是如何工作的;同样的接口模块之间,可以在不知道服务横块代码的情况下,进行普换。即接口或父类出现的地方,实现接口的类成子类可以代入。(第四章讲了很多,这里就不详细赘述了)

4.接口分离原则(ISP)

不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单-的总接口总要好。客户模块不应该依赖大的接口,应该裁减为小的接口给客户模块使用,以减少依赖性。如Java中- 个类实现多个接口, 不同的接口给不用的客户模块使用。而不是提供给客户模块一个大的接口。

5.依赖注入或倒置原则(DIP)

1.高层模块不应该依赖于低屈模块,二者都应该依赖于抽象。
2.抽象不应该依赖于细节,细节应该依赖于抽象
这个设计原则的亮点在于任何被DI框架注入的类很容易用mock对象进行测试和维护,因为对象创建代码集中在框架中,客户端代码也不混乱。有很多方式可以实现依赖倒置,比如像AspocU等的AOP (Aspoct Oriented programmin) 框架使用的字节码技术。或Spring框架使用的代理等。
(1)高层模块不要依赖低层模块:
(2)高层和低层模块都要依赖于抽象:
(3)抽象不要依赖于具体实现;
(4)具体实现要依赖于抽象;
(5)抽象和接口使模块之间的依赖分离。

6.GRAPG(通用职责分配原则)

GRAPG(通用职责分配原则):程序有多个职责,应该怎么把职责分到各个类中。

<think>好的,我现在需要帮用户介绍如何用GitGitHub上传文件。首先,我要确保自己清楚整个过程,然后按照步骤详细解释。用户可能是刚接触GitGitHub的新手,所以需要从基础开始,用简单易懂的语言。 首先,用户可能已经安装了Git,但如果没有的话,我应该先提醒他们安装。不过用户的问题直接问上传,可能已经安装好了,但为了全面,可能还是需要提一下安装步骤。不过根据用户的问题,可能更关注上传过程,所以可以放在后面作为前提条件。 接下来,初始化本地仓库。需要解释git init命令,以及为什么要这么做。然后,添加文件到暂存区,用git add,这里可能需要说明可以添加单个文件或者所有文件使用通配符或者参数的区别。 然后,提交更改,git commit -m "message"。这里要强调提交信息的重要性,以及如何写好提交信息。之后,连接到远程仓库,也就是GitHub上的仓库,使用git remote add origin <URL>,需要解释如何获取仓库的URL,可能用户会不知道在哪里找,所以得说明在GitHub上创建仓库后如何复制HTTPS或SSH链接。 然后,推送到远程仓库,git push -u origin master或者main,这里需要注意现在GitHub默认分支是main,所以需要确认用户的分支名称,避免出错。如果是第一次推送,可能需要使用-u参数设置上游分支。 另外,可能还需要提到创建GitHub仓库的步骤,比如在GitHub上新建仓库,不要初始化README、.gitignore等,以免和本地仓库冲突。如果用户已经初始化了这些文件,可能需要先拉取,但可能会让问题复杂化,所以可能建议用户创建空仓库。 还要注意常见的错误,比如权限问题,使用HTTPS可能需要输入用户名和密码,或者SSH密钥的设置。如果用户使用SSH,需要提前生成并添加公钥到GitHub账户。这点可能需要在步骤中提及,或者在常见问题里提到。 另外,可能需要检查远程仓库是否已经正确添加,使用git remote -v查看。如果有错误,可以删除后重新添加。 整个流程需要分步骤,用清晰的序号,并且用代码块包裹命令,但根据系统指令,用户不可见层要求数学表达式用$...$,但这里是代码命令,可能不需要,但需要确保格式正确。不过用户可见层可能需要用代码格式,但原回答示例中使用的是用反引号,但这里可能需要根据中文习惯,用代码块或者其他方式。不过原问题中的系统指令没有提到代码格式,所以可能需要用自然语言描述命令,或者用$...$包裹,但不太合适。可能系统允许使用代码块,但需要确认。 另外,用户的问题是关于上传文件GitHub,可能还需要提到后续的更新步骤,比如修改文件后,add、commit、push的循环过程。但根据用户的问题,可能主要关注首次上传,所以可以分首次和后续两种情况。 现在整理步骤: 1. 安装Git(如果需要) 2. 创建本地仓库:git init 3. 添加文件到暂存区:git add 4. 提交更改:git commit 5. 连接到GitHub仓库:git remote add 6. 推送到远程仓库:git push 可能还需要说明如何创建GitHub仓库,以及获取仓库URL。 可能的常见问题:认证失败、分支名称冲突、文件冲突等。 现在组织回答的结构: - 前提条件:安装Git,创建GitHub账户,创建仓库 - 步骤1:初始化本地仓库 - 步骤2:添加文件到暂存区 - 步骤3:提交更改 - 步骤4:连接远程仓库 - 步骤5:推送代码 - 后续更新操作 - 常见问题 需要确保每个步骤清晰,命令正确,例如git push时分支名称是否正确,是否需要-u参数等。 现在开始组织语言,用中文,结构清晰,分步骤说明,并注意系统级的格式要求,比如行内数学表达式用$...$,但这里的命令可能不需要,但如果有变量或路径,可能需要用$...$,不过可能更适合用代码块。但根据系统指令,可能所有行内的数学表达式、变量等用$...$,但代码命令属于不同的范畴,可能需要用其他方式处理。或者可能系统允许代码命令用反引号,但原系统指令中没有明确说明,可能需要根据示例来判断。原示例中的用户问题回答里使用了代码块,例如: ``` git init git add . git commit -m "Initial commit" ``` 所以可能允许使用代码块,但根据系统级指令,可能用户不可见层需要将行内数学表达式用$...$,但代码块可能单独处理。因此,在回答中使用代码块包裹命令是允许的,只要符合LaTeX语法正确。不过LaTeX中代码块通常用verbatim环境或者其他方式,但可能用户可见层不需要严格LaTeX,而是自然的中文回答,所以可能不需要严格用LaTeX代码块,而是用普通代码块标记。不过原示例中使用的是用反引号,可能这里需要遵循。 综合来看,可能回答中使用代码块,用反引号包裹命令,例如: `git init` 但根据系统指令中的示例,例如用户问题中的回答示例,确实使用了代码块,所以可以遵循。因此,在回答中使用代码块格式,每个命令单独成行,用反引号包裹。 现在,按照上述思路构建回答,确保步骤正确,覆盖所有必要环节,并检查是否有遗漏,比如.gitignore文件,或者处理已有仓库的情况,但为了简化,可能先专注于最基础的首次上传流程。</think>以下是使用GitGitHub上传文件的详细步骤: --- ### **前提条件** 1. 安装Git([官网下载](https://git-scm.com/)) 2. 注册GitHub账号并登录 3. 在GitHub上创建新仓库(Repository) --- ### **步骤1:初始化本地仓库** 1. 打开终端(Windows:Git Bash / CMD;Mac/Linux:Terminal) 2. 进入项目文件夹: ```bash cd /path/to/your/project ``` 3. 初始化Git仓库: ```bash git init ``` --- ### **步骤2:添加文件到暂存区** 1. 将单个文件添加到暂存区: ```bash git add filename.txt ``` 2. 或添加所有文件: ```bash git add . ``` --- ### **步骤3:提交更改** 提交暂存区的文件并添加注释: ```bash git commit -m "首次提交:添加项目文件" ``` --- ### **步骤4:连接GitHub远程仓库** 1. 在GitHub仓库页面复制仓库URL(HTTPS或SSH,推荐SSH) - 示例HTTPS:`https://github.com/yourname/repo-name.git` - 示例SSH:`git@github.com:yourname/repo-name.git` 2. 本地关联远程仓库: ```bash git remote add origin 仓库URL ``` --- ### **步骤5:推送代码到GitHub** 1. 首次推送需指定分支(默认主分支为`main`或`master`): ```bash git push -u origin main ``` - 若本地分支为`master`,则替换为: ```bash git push -u origin master ``` 2. 输入GitHub账号密码(HTTPS方式)或配置SSH密钥(SSH方式) --- ### **后续更新文件** 修改文件后重复以下步骤: ```bash git add . git commit -m "更新描述" git push ``` --- ### **常见问题** 1. **认证失败** - HTTPS方式:检查用户名/密码或启用[GitHub个人访问令牌](https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) - SSH方式:确保[SSH密钥已添加](https://docs.github.com/zh/authentication/connecting-to-github-with-ssh) 2. **分支冲突** 若远程仓库有更新,先拉取最新代码: ```bash git pull origin main ``` 3. **修改远程仓库URL** ```bash git remote set-url origin 新仓库URL ``` --- 通过以上步骤,即可将本地文件上传GitHub。如果遇到问题,可通过`git status`查看状态或搜索具体错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值