作业2:读书笔记+新得体会
作业2:读书笔记+新得体会
这个作业属于哪个课程 | 2022软件代码开发技术 |
---|---|
这个作业要求在哪里 | 读书笔记----软件设计原则、设计模式 |
这个作业的目标 | 阅读指定书籍,并做读书笔记和心得体会 |
内容归纳总结
所选参考书籍:《软件秘笈:设计模式那点事》,本书主要是诠释并系统地总结了23种软件设计模式。
一、设计原则
设计原则 | 解释 |
---|---|
开闭原则 | 一个软件实体,如类,模块和函数应该对外扩展开发,对内修改关闭。用抽象构建框架,用实现扩展细节。不以改动原有类的方式来实现新需求,而是应该以实现事先抽象出来的接口(或具体类继承抽象类)的方式来实现。 |
单一职责原则 | 一个类只允许有一个职责,即只有一个导致该类变更的原因。如果一个类具有多种职责,就会有多种导致这个类变化的原因,从而导致这个类的维护变得困难。 |
依赖倒置原则 | 依赖抽象而不是依赖实现。抽象不应该依赖细节,细节应该依赖抽象。高层模块不能依赖低层模块,二者都应该依赖抽象。 |
接口分离原则 | 多个特定的客户端接口要好于一个通用性的总接口。客户端不应该依赖它不需要实现的接口。不建立庞大臃肿的接口,应尽量细化接口,接口中的方法应尽量少。 |
迪米特法则 | 一个对象应该对尽可能少的对象有接触,也就是只接触那些真正需要接触的对象。迪米特法则也叫做最少知道原则,一个类应该只和它的成员变量,方法的输入,返回参数中的类作交流,而不应该引入其他的类。 |
里氏替换原则 | 所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。 |
二、设计模式
设计模式:设计模式就是通过前人的各种优化最后得出的一套代码设计的模板,使用设计模式可以优化代码的质量,提高复用性。
设计模式的分类:
-
创建型模式
- 工厂方法模式:定义一个创建产品对象的工厂接口,让子类决定实例化哪一种实例对那个。
- 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
- 建造者模式:复杂对象的创建与表示分离同样的构建过程可以创建不同的表示。
- 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
- 单例模式:
-
结构型模式
- 适配器模式:将一个类的接口转换成客户希望的另外一个接口
- 桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化
- 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构
- 装饰者模式:动态地给一个对象添加一些额外的职责
- 外观模式:为子系统中的一组接口提供一个一致的界面
- 享元模式:运用共享技术有效地支持大量细粒度的对象
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问
-
行为型模式
- 责任链模式:将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
- 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作
- 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
- 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示
- 中介者模式:用一个中介对象来封装一系列的对象交互
- 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
- 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新
- 状态模式:允许一个对象在其内部状态改变时改变它的行为
- 策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换
- 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
- 访问者模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
三、心得体会
对开闭原则的一些理解,假如你写了A,B,C三个JAVA程序,并且已经测试完毕而且上线,现在由于功能的变化需要修改和增加部分代码,如果你没有好的设计模式,应该是在A,B,C中进行修改,并且基本要全部测试,如果有良好的设计模式,我可能继承新增一个D.java 就可以实现,从这个角度来说,我的测试任务量少了,出现问题更加容易定位问题了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?