作业二

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology |

| ----------------- |--------------- |

| 这个作业要求在哪里| https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology/homework/12492 |

| 这个作业的目标 | 学习设计原则和模式,并运用到今后的实际开发之中 |

参考资料:
《软件设计模式》朱洪军

摘要

>软件是现代各类信息系统的灵魂。当今软件系统越来越庞大,功能越来越丰富,设计越来越复杂,维护越来越困难。软件工程作为一门独立的学科已发展多年,软件生命周期模型、面向对象技术、软件体系        
 结构和设计模式方法等概念逐步构成其核心理论和技术方法。设计模式提供了一种抽象的软件实现方法论。其所包含的各种设计模式源自众多软件开发人员长期成功或失败经验的总结,是软件开发过程中所 
 面临的一般性问题的解决方案。不同的设计模式展示了专业工作者思考和解决真实问题的过程,隐含于实践中的认识历程和行动逻辑更为重要。

设计原则

  • 1.单一职责原则:单一职责原则强调一个类或模块应仅有一个引起其变化的因素。
  • 2.开放/闭合原则:开放/闭合原则要求类或模块的代码对扩展是开放的,对修改是关闭的。
  • 3.接口隔离原则:接口隔离原则指出,如果某个接口的行为不是内聚的,就应该按照业务分组,并将分组后的业务行为通过隔离的接口单独定义。
  • 4.依赖倒置原则:依赖倒置原则建议,高层模块不应依赖于低层模块,二者都应该依赖于抽象;抽象不应依赖于细节,细节应依赖于抽象。
  • 5.Liskov替换原则:Liskov替换原则建议子类对象必须能够完全替换掉它们的父类对象,而不需要改变父类的任何属性。

设计模式

定义

    软件设计模式是基于设计目标上下文的、针对常见代码问题的、可行和可重用的代码设计方案。

分类

  • 创建型模式
    • 单例模式:单例是指目标类只有一个实例对象,并且向使用该对象的客户端提供访问单例的全局方法。
    • 原型模式: 原型是指通过复制自己达到构造目标对象新实例的对象。
    • 构造器模式:构造器是指为构造一个复杂的产品对象进行产品组成元素构建和产品组装的对象。
    • 抽象工厂模式:抽象工厂指在不指定具体产品类的情况下,为相互关联的产品簇或产品集提供创建接口,并向客户端隐藏具体产品创建的细节或表示的对象。
    • 工厂方法模式:工厂方法模式中,工厂方法类定义产品对象创建接口,但由子类实现具体产品对象的创建。
  • 结构型模式
    • 适配器模式:适配器指将某种接口或数据结构转换为客户端期望的类型,使得不兼容的类或对象能够一起协作。
    • 桥模式:桥使用组合关系将代码的实现层和抽象层分离,让实现层与抽象层代码可以分别自由变化。
    • 组合模式:组合是指使用组合和继承关系将聚合体及其组成元素分解成树状结构,以便客户端在不需要区分聚合体或组成元素类型的情况下使用统一的接口操作它们。
    • 装饰器模式:装饰器通过包装的方式向目标对象中动态地添加或删除功能。
    • 门面模式:门面向客户端提供使用子系统的统一接口,用于简化客户端使用子系统的操作。
    • 享元模式:享元模式采用共享方式向客户端提供数量庞大的细粒度对象。
    • 代理模式:代理是用于控制客户端访问目标对象的占位对象。
  • 行为模式
    • 责任链模式:责任链是指将客户端请求处理的不同职责对象组成请求处理链。
    • 命令模式:命令将类的业务行为以对象的方式封装,以便实现行为的参数化、撤销或重做等需求。
    • 解释器模式:解释器是用于表达语言语法树和封装语句解释行为的对象。
    • 迭代器模式:迭代器能够在不暴露聚合体内部表示的情况下,向客户端提供遍历聚合元素的方法。
    • 仲裁者模式:仲裁者可以封装和协调多个对象之间的耦合交互行为,以减弱这些对象之间的耦合关联
    • 备忘录模式:备忘录用于在不破坏目标对象封装特性的基础上,将目标对象内部的状态存储到外部对象中,以备之后恢复状态时使用。
    • 观察者模式:观察者指当目标对象状态发生变化后,对状态变化事件进行响应或处理的对象。
    • 状态模式:状态指状态对象,用于封装上下文对象的特定状态行为,使得上下文对象在内部状态改变时能够改变其自身的行为。
    • 策略是用于封装一组算法中单个算法的对象,这些策略可以相互替换,使得单个算法的变化不影响使用它的客户端。
    • 模板方法模式:模板方法用来定义算法的框架,将算法中的可变步骤定义为抽象方法,指定子类实现或重写。
    • 访问者模式:访问者用于封装施加在聚合体中聚合元素的操作,从而使该操作从聚合对象中分离出来,在不对聚合对象产生影响的前提下实现自由扩展。

总结

在之前的员工管理系统中项目开发中,我使用过策略模式,再给员工发放工资的过程中,不同的员工具有不同的结算算法,使用策略模式,可以使各个算法可以替换,并且易于扩展,在添加新的算法时只需重新编写一个策略类即可。还使用到单例模式,员工管理系统只能有一个总经理,它拥有该系统的最高使用权限。
通过阅读《软件设计模式》本书,我学习到了更多优秀的设计模式,以及他们对于软件开发的深远意义。希望在今后的学习中,可以逐渐深入的去使用这些设计设计模式。

截图

posted @ 2022-03-04 22:06  Bai_Y  阅读(84)  评论(0)    收藏  举报