作业二 读书笔记

这个作业属于哪个课程 软件代码开发技术
这个作业要求在哪里 作业要求
这个作业的目标 阅读软件设计模式相关书籍并书写心得体会

参考书目:《软件秘笈 设计模式那点事》

一 设计原则

软件设计基本原则

原则 含义
高内聚低耦合 一个软件模块内各个元素彼此结合的紧密程度要高
一个软件结构内不同模块之间的互联程度要低
面向抽象编程 程序都依赖于抽象,而不是依赖具体实现
多用组合少用继承
开-闭原则 对扩展开放,对修改关闭

软件设计六大原则

原则 含义
开-闭原则(OCP) 一个软件实体应当对扩展开放,对修改关闭
单一职责原则(SRP) 一个类,应当只有一个引起它变化的原因
依赖倒置原则(DIP) 针对抽象编程,而不要针对实现编程
接口隔离原则(ISP) 使用多个隔离的接口,分离不同的接口行为
里氏替换原则(LSP) 继承必须确保基类所拥有的性质在子类中仍然成立
迪米特原则(LoD) 一个软件实体应当尽可能少地于其它实体发生相互作用

二 设计模式

创建者模式

  • 工厂方法模式:定义一个创建产品对象的工厂接口,让子类决定实例化哪一中实例对象,也就是将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品的创建
  • 抽象工厂模式:提供一个接口,用于创建相关或者依赖对象的家族,而不需要制定具体的实现类
  • 建造者模式:将复杂对象的创建与表示分离,使得同样的构建过程可以创建不同的表示
  • 原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
  • 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

结构型模式

  • 适配器模式:把一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法放在一起的两个类能够在一起工作。
  • 桥接模式:将抽象化与实现化脱藕,使得二者可以独立的变化
  • 组合模式:将对象组合成树形结构可以表示“部分-整体”的层次结构
  • 装饰者模式:再不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能
  • 外观模式:为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用
  • 享元模式:以共享的方式高效的支持大量的细粒度对象,通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗
  • 代理模式:两个都西昂参与处理同一请求,接收的请求由代理对象委托给真实对象处理,代理对象控制请求的访问

行为型模式

  • 责任链模式:很多对象由每一个对象对其下家的引用而连接起来形成一条链,客户端应用请求再这个链上传递,知道链上的某一个对象决定处理此请求
  • 命令模式:将一个请求封装成一个对象,从而使用户可用不同的请求对客户进行参数化:将请求排队或记录请求日志
  • 解释器模式:给定一个语言的文法表示,并且定义一个解释器,用来解释语言中的句子
  • 迭代器模式:提供了一种模式顺序访问一个集合对象中的各个元素功能,而又不暴露其内部的表示
  • 中介者模式:用一个中介对象来封装一系列对象之间的交互,使各个对象中不需要显示的引用其它对象实例
  • 备忘录模式:再不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
  • 观察者模式:定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动刷新
  • 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类
  • 策略模式:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用
  • 模板方法模式:定义一个操作中的算法股价,而将一些实现步骤延迟到子类当中
  • 访问者模式:用户可以在不改变个元素类的前提下定义作用于这些元素的新操作

心得体会

面向结果编程和面向对象编程,其思想所带来的程序健壮性扩展性等差异十分之大,面向抽象可以使得程序拥有极好的扩展性与可修改性,虽然因为时间等原因,本书只详细的阅读了三分之一,
其余只大概的看了一遍,但类似工厂方法等设计原则使我的编程思想清晰了许多,受益匪浅,在编程的一些使用场景上,本书也给出了很多的指导。每一种设计原则都有其独特的作用,但彼此之间
也有着联系,如工厂模式与抽象工厂模式。最为重要的是,设计原则并不意味着在编程时只能使用一种,多种原则互相使用,彼此弥补才能发挥最好的效果。

截图

posted @ 2022-03-06 19:28  LV-WM  阅读(57)  评论(0)    收藏  举报