读书笔记----软件设计原则、设计模式

这个作业属于哪个课程 <2022软件代码开发技术>
这个作业要求在哪里 <读书笔记----软件设计原则、设计模式>
这个作业的目标 了解软件设计原则、设计模式

参考书籍:郑阿奇《软件秘笈:设计模式那点事》

内容归纳总结

一、设计原则

设计原则 个人理解
单一职责原则 (Single Responsibility Principle) 一个模块的组成元素之间的功能相关性
一个类只负责一项职责
提高了代码的可读性,提高系统的可维护性
开放-关闭原则 (Open-Closed Principle) 软件实体类、函数等可进行拓展,但不可以修改
开放拓展,关闭修改
里氏替换原则 (Liskov Substitution Principle) 子类可以扩展父类的功能,但不能改变父类原有的功能
不影响原功能
依赖倒转原则 (Dependence Inversion Principle) 面向接口编程,依赖抽象
接口隔离原则 (Interface Segregation Principle) 一个类对另一个类的依赖应该建立在最小的接口上
尽可能细化接口,让接口中的方法更少
迪米特法则(Law Of Demeter) 一个对象应该对其它对象保持最少的了解。让系统功能模块相对独立
组合/聚合复用原则 (Composite/Aggregate Reuse Principle) 在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分
新的对象通过向这些对象的委派达到复用已有功能的目的

二、设计模式

创建型模式

  • 工厂方法模式

通过使用一个共同的接口来指向新创建的对象,实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品的创建。

  • 抽象工厂模式

接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

  • 建造者模式

使用多个简单的对象一步一步构建成一个复杂的对象。

  • 原型模式

实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。

  • 单例模式

一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。

结构型模式

  • 适配器模式

一个单一的类,该类负责加入独立的或不兼容的接口功能。

  • 桥接模式

把抽象化与实现化解耦,使得二者可以独立变化。通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

  • 组合模式

创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

  • 装饰器模式

允许向一个现有的对象添加新的功能,同时又不改变其结构。

  • 外观模式

它向现有的系统添加一个接口,来隐藏系统的复杂性。

  • 享元模式

重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

  • 代理模式

一个类代表另一个类的功能。创建具有现有对象的对象,以便向外界提供功能接口。

行为型模式

  • 责任链模式

通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者。

  • 命令模式

请求以命令的形式包裹在对象中,并传给调用对象。

  • 解释器模式

实现了一个表达式接口,该接口解释一个特定的上下文。用于SQL解析等方面。

  • 迭代器模式

用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

  • 中介者模式

用来降低多个对象和类之间的通信复杂性。

  • 备忘录模式

保存一个对象的某个状态,以便在适当的时候恢复对象。

  • 观察者模式

当一个对象被修改时候,就能通知它依赖的对象并且自动更新,需要建立一套触发机制。

  • 状态模式

允许对象在内部状态发生改变时改变它的行为。对象的行为依赖于它的属性,可以根据状态改变来改变它的行为。

  • 策略模式

一个类的行为或其算法可以在运行时更改。

  • 模板模式

一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

  • 访问者模式

元素的执行算法可以随着访问者改变而改变。符合单一职责原则、但违反迪米特原则。

心得体会

在之前有使用过MVC架构来做一个javaWeb的关于管理系统的网页,并没有太多的在意设计模式,只是简单的了解以下MVC该如何进行使用。
了解了MVC将程序结构划分为三层,每一层都对外提供了可供上层调用的接口,既能维系三层之间的联系,也能保持相对的独立性。
View表示视图层,负责数据的可视化。Controller通常控制器用来从视图读取数据,并发送给对应的模型处理,再将结果反馈给视图显示。
Model模型是用于处理应用程序中业务数据和逻辑的部分,负责直接与数据库打交道。
在学习了设计模式之后,了解了各个设计模式不同的优缺点、以及它们运用的场景。发现MVC耦合性低,而且可以与工厂模式结合进行开发,
让代码的功能划分更加明了。
希望在今后,可以逐渐运用上这些开发模式。

posted @   滑华  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示