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

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

这个作业属于哪个课程 班级链接
这个作业要求在哪里 作业要求链接
这个作业的目标 学习软件的设计原则和设计模式并加以运用

参考书籍

《设计模式 - 可复用面向对象软件的基础》

设计原则

分类

  • 开闭原则:

    • 软件实体应该对扩展开放,对修改关闭。
    • 开闭原则是设计原则的核心原则,其他的设计原则都是开闭原则表现和补充。实现开闭原则的方法就是抽象。
  • 单一职责原则:

    • 一个类应该只承担一种责任。
  • 里氏替换原则:

    • 所有引用基类的地方必须能透明地使用其子类的对象。
  • 依赖倒置原则:

    • 面向抽象编程,不要面向具体编程。
  • 接口隔离原则:

    • 使用专门的接口,而不是大而全统一的接口,不要强迫客户端程序依赖不需要的方法。
  • 聚合/组合复用原则:

    • 如果可以,应该使用组合而不是继承来达到代码复用的目的。
  • 迪米特法则:

    • 软件实体之间应该做到最少的交互。不要和陌生人说话。

要求:

  • 面向抽象(抽象类、接口)编程,而不是面向实现编程。

  • 接口和类的功能要尽可能的单一,避免大而全的类和接口。

  • 优先使用组合,而不是继承。

  • 子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。

  • 子类应该尽可能的与父类保持一致,不要重写父类原有逻辑。

  • 如果类之间没必要直接交互,可以通过“中介”,而不是直接交互,降低耦合性。

  • 实现和细节可以通过DI的方式,最大程度减少“硬编码”。

  • 如果没有什么明显弊端,类应该被设计成不变的。

  • 降低其他类对自身的访问权限,不要暴露内部属性成员,如果需要提供相应的访问器(属性)。

设计模式

分类

  • 创建型模式是用来创建对象的模式,抽象了实例的创建过程,封装了创建逻辑。

    • 将系统所使用的具体类的信息封装起来。
    • 隐藏了类的实例是如何被创建和组织的。
  • 结构型模式讨论的是类和对象的结构,继承和组合结构。

    • 采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象实现新的功能(对象结构型模式)。
    • 结构中的各个不同角色组织在一起以提供更强大的、逻辑清晰的功能。
    • 结构性模式的类层次结构的组织上有很大的相似性,但是逻辑的侧重功能点是不同的。
  • 行为型设计模式关注的是对象的行为,用来解决对象之间的联系/通信问题。

    • 也就是对象之间针对于不同的问题场景,如何进行合理交互。

细化

  • 创建型

    • 工厂模式(Factory Pattern)

    • 抽象工厂模式(Abstract Factory Pattern)

    • 单例模式(Singleton Pattern)

    • 建造者模式(Builder Pattern)

    • 原型模式(Prototype Pattern)

  • 结构型

    • 适配器模式(Adapter Pattern)

    • 桥接模式(Bridge Pattern)

    • 组合模式(Composite Pattern)

    • 装饰器模式(Decorator Pattern)

    • 外观模式(Facade Pattern)

    • 享元模式(Flyweight Pattern)

    • 代理模式(Proxy Pattern)

  • 行为型

    • 责任链模式(Chain of Responsibility Pattern)

    • 命令模式(Command Pattern)

    • 解释器模式(Interpreter Pattern)

    • 迭代器模式(Iterator Pattern)

    • 中介者模式(Mediator Pattern)

    • 备忘录模式(Memento Pattern)

    • 观察者模式(Observer Pattern)

    • 状态模式(State Pattern)

    • 策略模式(Strategy Pattern)

    • 模板模式(Template Pattern)

    • 访问者模式(Visitor Pattern)

心得体会

设计模式的根本是设计原则,而设计原则又是为了达到实现一个“优秀”软件的行为准则。
在你还不能灵活的运用设计原则时,设计模式则是你的垫脚石,让你在具体的问题面前能够写出更好地代码。

编辑界面截图

posted @ 2021-03-17 23:17  呐笑醉倾城  阅读(87)  评论(0编辑  收藏  举报