作业二

所属课程 2022软件代码开发技术
作业要求 读书笔记----软件设计原则、设计模式
作业目标 进一步地了解软件代码开发技术这门课程,对以后的学习有很大的帮助,提高代码编程能力

一、参考书籍

名称:读书笔记----软件设计原则、设计模式
作者:郑阿奇

二、内容归纳总结

1、设计原则

  • 开闭原则: 对扩展开放,对修改关闭。在不改动原有代码的前提下实现新功能,增强程序的可扩展性,同时降低程序的维护成本。
  • 迪米特法则: 一个类应该之和它的成员变量、方法输入、返回参数的类交流,而不应引入其他类,发生间接交流。
  • 里氏代换原则: 所有引用基类的地方需要透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。
  • 接口隔离原则:客户端不依赖不需实现的接口。接口应该尽可能细化,使得其中的方法尽可能少;同时也不应过少,使得设计复杂化。能够避免同一接口包含不同职责,符合高内聚低耦合的思想。
  • 依赖倒置原则:针对接口编程,尽量不产生具体类的派生,而是以继承抽象类或实现接口来实现。将业务层归于上层模块,逻辑层、数据层归于底层模块。通过抽象来搭建框架,建立类与类的关联,以减少类间的耦合性,使得功能实现稳定,扩展性高,便于维护。
  • 单一职责原则: 一个类或函数只允许由单一的职责。
  • 合成复用原则: 尽量使用合成/聚合,而不使用继承。

2、设计模式

1、创建型模式

  • 单例模式:单例是指目标类只有一个实例对象,并且向使用该对象的客户端提供访问单例的全局方法。
  • 原型模式: 原型是指通过复制自己达到构造目标对象新实例的对象。
  • 构造器模式:构造器是指为构造一个复杂的产品对象进行产品组成元素构建和产品组装的对象。
  • 抽象工厂模式:抽象工厂指在不指定具体产品类的情况下,为相互关联的产品簇或产品集提供创建接口,并向客户端隐藏具体产品创建的细节或表示的对象。
  • 工厂方法模式:工厂方法模式中,工厂方法类定义产品对象创建接口,但由子类实现具体产品对象的创建。

2、结构型模式

  • 适配器模式:适配器指将某种接口或数据结构转换为客户端期望的类型,使得不兼容的类或对象能够一起协作。
  • 桥模式:桥使用组合关系将代码的实现层和抽象层分离,让实现层与抽象层代码可以分别自由变化。
  • 组合模式:组合是指使用组合和继承关系将聚合体及其组成元素分解成树状结构,以便客户端在不需要区分聚合体或组成元素类型的情况下使用统一的接口操作它们。
  • 装饰器模式:装饰器通过包装的方式向目标对象中动态地添加或删除功能。
  • 门面模式:门面向客户端提供使用子系统的统一接口,用于简化客户端使用子系统的操作。
  • 享元模式:享元模式采用共享方式向客户端提供数量庞大的细粒度对象。
  • 代理模式:代理是用于控制客户端访问目标对象的占位对象。

3、行为模式

  • 责任链模式:责任链是指将客户端请求处理的不同职责对象组成请求处理链。
  • 命令模式:命令将类的业务行为以对象的方式封装,以便实现行为的参数化、撤销或重做等需求。
  • 解释器模式:解释器是用于表达语言语法树和封装语句解释行为的对象。
  • 迭代器模式:迭代器能够在不暴露聚合体内部表示的情况下,向客户端提供遍历聚合元素的方法。
  • 仲裁者模式:仲裁者可以封装和协调多个对象之间的耦合交互行为,以减弱这些对象之间的耦合关联
  • 备忘录模式:备忘录用于在不破坏目标对象封装特性的基础上,将目标对象内部的状态存储到外部对象中,以备之后恢复状态时使用。
  • 观察者模式:观察者指当目标对象状态发生变化后,对状态变化事件进行响应或处理的对象。
  • 状态模式:状态指状态对象,用于封装上下文对象的特定状态行为,使得上下文对象在内部状态改变时能够改变其自身的行为。
  • 策略是用于封装一组算法中单个算法的对象,这些策略可以相互替换,使得单个算法的变化不影响使用它的客户端。
  • 模板方法模式:模板方法用来定义算法的框架,将算法中的可变步骤定义为抽象方法,指定子类实现或重写。
  • 访问者模式:访问者用于封装施加在聚合体中聚合元素的操作,从而使该操作从聚合对象中分离出来,在不对聚合对象产生影响的前提下实现自由扩展。

三、心得体会

《软件秘笈:设计模式那点事》这本书使用了通俗易懂的文字给读者介绍了设计原则和设计模式,通过此次阅读,我明白了关实现代码功能是远远不够的,写出来的代码如果不够简洁,注释不够清晰,随着代码的增加,对后续的代码开发只会愈发困难。所以,编程是一门艺术,写好代码非常重要,基于这些软件设计模式与设计原则,能让我们写出更加简洁明了的代码,大大提高代码的重用性,可读性、可靠性、灵活性以及可维护性。

四、截图

posted @ 2022-03-06 14:50  ROB00  阅读(49)  评论(0)    收藏  举报