找回密码
 立即注册
首页 业界区 业界 设计原则

设计原则

扫恢怯 2025-6-6 09:32:55
设计模式


  • 设计模式是指在软件开发中,经过验证的,⽤于解决在特定环境下,重复出现的,特定问题的解决⽅案;
内存模型


  • 继承Base,和成员变量为Base类型的内存模型
    1.png

  • 成员变量为Base指针的内存模型-》实际开发常用这种

    • 由于该形式以Base指针的形式存储,展现一种多态的思想
    • 而上一种中Base类型和Subject呈现一种强依赖的关系
      2.png


  • 父类存在虚函数,子类继承重写虚函数
    3.png


    • 扩展:c语⾔当中的多态-》通过函数指针

      • redis
      • nginx


模式设计原则


  • 掌握设计原则,而不是设计模式-》设计模式的使用条件有些时候太苛刻
  • 八个原则

    • 原则1:依赖倒置原则 -》变化点必须依赖稳定点

      • ⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象;
      • 抽象不应该依赖具体实现,具体实现应该依赖于抽象;

      • ⾃动驾驶系统公司是⾼层,汽⻋⽣产⼚商为低层,它们不应该互相依赖,⼀⽅变动另⼀⽅也会跟着变动;⽽应该抽象⼀个⾃动驾驶⾏业标准,⾼层和低层都依赖它;这样以来就解耦了两⽅的变动;⾃动驾驶系统、汽⻋⽣产⼚商都是具体实现,它们应该都依赖⾃动驾驶⾏业标准(抽
        象);

    • 原则2:开放封闭原则

      • ⼀个类应该对扩展开放,对修改关闭;

        • 扩展:继承-》virtual多态、组合(成员变量指针)-》组合抽象基类;


    • 原则3:⾯向接⼝编程

      • 不将变量类型声明为某个特定的具体类,⽽是声明为某个接⼝。
      • 客户程序⽆需获知对象的具体类型,只需要知道对象所具有的接⼝。
      • 减少系统中各部分的依赖关系,从⽽实现“⾼内聚、松耦合”的类型设计⽅案。

    • 原则4:封装变化点 -》关键

      • 将稳定点和变化点分离,扩展修改变化点;让稳定点变化点的实现层次分离;

    • 原则5:单⼀职责原则

      • ⼀个类应该仅有⼀个引起它变化的原因 -》只有一个功能;

    • 原则6:⾥⽒替换原则

      • ⼦类型必须能够替换掉它的⽗类型;主要出现在⼦类覆盖⽗类实现,原来使⽤⽗类型的程序可能出现错误;覆盖了⽗类⽅法却没实现⽗类⽅法的职责 -》继承时没有实现某些方法;

    • 原则7:接⼝隔离原则

      • 不应该强迫客户依赖于他们不⽤的⽅法;
      • ⼀般⽤于处理⼀个类拥有⽐较多的接⼝,⽽这些接⼝涉及到很多职责;

    • 原则8:对象组合优于类继承

      • 继承耦合度****⾼,组合耦合度**低;


什么情况下使⽤设计模式?


  • 系统的关键依赖点;
  • 能明确找到变化点;
  • 能明确找到复⽤⽅向;
  • 对需求变化⽅向熟悉;
如何找到设计模式?


  • 从重构中获得;
  • 重构

    • 静态转变为动态
    • 早绑定转变为晚绑定
    • 继承转变为组合
    • 编译时加载转变为运⾏时加载
    • 紧耦合转变为松耦合

为什么要学习设计模式?


  • 从已有的且证明有效的设计模式中获取灵感,少⾛弯路;
  • 通⽤语⾔,知道在已有的设计模式扩展代码;
  • 体会模式设计,设计⾃⼰的⾏之有效的设计模式;
学习设计模式的步骤


  • 深刻体会上⾯的原则;
  • 理解设计模式,能知道设计模式的变化点和稳定点
  • 能在已使⽤的设计模式中,知道如何写扩展
  • 能在复杂需求中,抽象出已有设计模式;
  • 能在重构中,开发⾃⼰的设计模式;
扩展


  • 多个子类中重复的流程合并到父类中,变化的流程暴露出去,子类的处理变为单一

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册