ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-03-07 01:31:07  阅读:163  来源: 互联网

标签:原则 读书笔记 对象 模式 ---- 接口 耦合 设计模式


作业二 : 读书笔记----软件设计原则、设计模式

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 预习设计模式和原则

参考书籍

书名:《软件秘籍:设计模式那点事》
作者: 郑阿奇
书名:《面向对象软件工程》
作者: 石冬凌

软件设计原则

原则 内容
开闭原则 对扩展开放,对修改关闭
迪米特原则 实体间尽量少相互作用,模块保持相对独立
单一职责原则 一个类只干一件事
接口隔离原则 多个接口好于单个接口
里氏替换原则 子类可以替换到父类的位置,且不会粗测哦
依赖倒置原则 针对接口编程,依赖于抽象而不依赖于具体。

设计模式

创建型模式

  • 工厂方法模式:定义一个创建产品对象的工厂接口,让子类决定实例化哪一种实例。
  • 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
  • 建造者模式:复杂对象的创建与表示分离同样的构建过程可以创建不同的表示。
  • 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
  • 单例模式:一个类仅有一个实例

结构型模式

  • 适配器模式:使得两个不匹配的类可以一起工作
  • 桥接模式:分离抽象化和具体化,使二者可独立变化
  • 组合模式:分级的树形结构,使得单个对象和组合对象具有一致性
  • 装饰者模式:动态地给一个对象添加一些额外的职责,且不改变原类文件和使用继承
  • 外观模式:为子系统中的一组接口提供一个一致的界面
  • 享元模式:来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问

行为型模式

  • 责任链模式:发出请求的客户端不知道哪一个对象最终处理这个请求
  • 命令模式:通过中间的命令者角色完成请求和实现间的解耦
  • 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
  • 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示
  • 中介者模式:用一个中介对象来封装一系列对象之间的交互,降低各个对象之间的耦合度
  • 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态
  • 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新
  • 状态模式:允许一个对象在其内部状态改变时改变它的行为
  • 策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换
  • 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
  • 访问者模式:使用户可以在不改变各元素类的前提下定义作用于这些元素的新操作

开发经验

曾经我使用过 pythonDjango3.0 框架来进行 web 开发,这个框架有一个特点就是基于 MTV 模型,其与常见的 MVC 模型稍有不同,但同样是松耦合的,使得后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
MTV 模式简易图示:

  • M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
  • T 表示模板 (Template):负责如何把页面(html)展示给用户。
  • V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。
    当我使用Django框架在开发,得益于 MTV 模式,各个模块分工清晰明了,使得我在开发过程中感受到以下特点:低耦合、开发快捷、部署方便、容易维护。这让我深刻感受到了低耦合的好处以及好的软件开发模式的重要性。

心得体会

我认为各种设计模式的最终目的往往是使得软件各个模块尽可能高内聚、低耦合,且各个设计模式和原则往往都是混合使用的,这样才能在最大程度上实现高内聚、低耦合。要做到高内聚、低耦合的编码,始终还是需要自身的努力。

后台截图

标签:原则,读书笔记,对象,模式,----,接口,耦合,设计模式
来源: https://www.cnblogs.com/wtfhlwd/p/15974332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有