当前位置: 首页 >  网技达人 >  设计原则

设计原则

导读:设计模式.设计模式是指在软件开发中,经过验证的,⽤于解决在特定环境下,重复出现的,特定问题的解决⽅案;.内存模型.继承Base,和成员变量为Base类型的内存模型.成员变量为Base指针的内存模型-》实际开发常用这种.由于该形式以Base指针的形式存储,展现一种多态的思想.而上一

设计模式

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

内存模型

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

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

    • 由于该形式以Base指针的形式存储,展现一种多态的思想

    • 而上一种中Base类型和Subject呈现一种强依赖的关系

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

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

模式设计原则

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

  • 八个原则

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

      • ⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象;

      • 抽象不应该依赖具体实现,具体实现应该依赖于抽象;

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

    • 原则2:开放封闭原则

      • ⼀个类应该对扩展开放,对修改关闭;
      • 扩展:继承-》virtual多态、组合(成员变量指针)-》组合抽象基类;
    • 原则3:⾯向接⼝编程

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

      • 将稳定点和变化点分离,扩展修改变化点;让稳定点变化点 的实现层次分离;
    • 原则5:单⼀职责原则

      • ⼀个类应该仅有⼀个引起它变化的原因 -》只有一个功能;
    • 原则6:⾥⽒替换原则

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

      • 不应该强迫客户依赖于他们不⽤的⽅法;
      • ⼀般⽤于处理⼀个类拥有⽐较多的接⼝,⽽这些接⼝涉及到很多职责;
    • 原则8:对象组合优于类继承

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

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

  • 系统的关键依赖点;
  • 能明确找到变化点;
  • 能明确找到复⽤⽅向;
  • 对需求变化⽅向熟悉;

如何找到设计模式?

  • 从重构中获得;
  • 重构
    • 静态转变为动态
    • 早绑定转变为晚绑定
    • 继承转变为组合
    • 编译时加载转变为运⾏时加载
    • 紧耦合转变为松耦合

为什么要学习设计模式?

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

学习设计模式的步骤

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

扩展

  • 多个子类中重复的流程合并到父类中,变化的流程暴露出去,子类的处理变为单一
内容
  • RocketMQ消费者是如何负载均衡的
    RocketMQ消费者是如何负载
    2023-12-09
    摘要:RocketMQ 支持两种消息模式:集群消费( Clustering )和广播消费( Broadcasting )
  • Three.js教程:对象克隆、复制
    Three.js教程:对象克隆、
    2023-12-08
    推荐:将 NSDT场景编辑器 加入你的3D工具链.其他系列工具: NSDT简石数字孪生.对象克隆.clone()和复制.
  • 关于Halcon中variation_model模型的快速解读。
    关于Halcon中variati
    2023-12-04
    十一期间在家用期间研读了下Halcon的variation_model模型,基本上全系复现了他的所有技术要求和细节,这里
  • FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置
    FlashDuty Change
    2023-12-04
    FlashDuty:一站式告警响应平台,前往此地址免费体验!.FlashDuty.现在已经全面支持了深色模式,这为您提供
  • 关于三维模型轻量化方法探索
    关于三维模型轻量化方法探索
    2023-12-03
    随着三维模型在工业设计、虚拟现实、游戏等领域的广泛应用,三维模型轻量化成为了一个非常重要的问题。三维模型轻量化是指在保证
  • 【工程应用八】终极的基于形状匹配方案解决(小模型+预生成模型+无效边缘去除+多尺度+各项异性+最小组件尺寸)
    【工程应用八】终极的基于形状匹配
    2023-12-02
    我估摸着这个应该是关于形状匹配或者模版匹配的最后一篇文章了,其实大概是2个多月前这些东西都已经弄完了,只是一直静不下来心
  • 三维模型轻量化在移动应用场景的如何发挥作用
    三维模型轻量化在移动应用场景的如
    2023-12-01
    在移动应用场景中,三维模型的重量对于应用的性能、流畅度和用户体验都有很大的影响。而三维模型轻量化技术可以通过减少模型数据
  • 休闲儿童T恤,可爱印花,柔软透气,让宝宝轻松玩耍舒适自在
    休闲儿童T恤,可爱印花,柔软透气
    2024-01-15
    休闲儿童T恤,给宝宝舒适自在的穿着体验.1. 透气环保的面料,让宝宝轻松玩耍.休闲儿童T恤采用了柔软透气的面料,为宝宝打
  • 萌娃配饰套装,包包、帽子、围巾等,增添宝宝的时尚气息
    萌娃配饰套装,包包、帽子、围巾等
    2024-01-20
    萌娃配饰套装,为宝宝增添时尚气息.宝宝是家庭的小太阳,****们都希望给他们最好的一切。随着时尚的发展,宝宝的时尚潮流也
  • 运动儿童外套,防风保暖,轻便舒适,宝宝运动必备
    运动儿童外套,防风保暖,轻便舒适
    2023-12-06
    运动儿童外套,防风保暖,轻便舒适,宝宝运动必备.运动是孩子们健康成长的重要组成部分,而一件适合运动的外套对于宝宝的运动体
  • 商务休闲领带
    商务休闲领带
    2023-12-31
    商务休闲领带:展现不同的风格.商务休闲领带是男士着装中非常重要的一部分,它不仅可以完美搭配西装,展现出商务精英的睿智和稳
  • 时尚太阳镜
    时尚太阳镜
    2024-01-20
    时尚太阳镜.时尚太阳镜一直以来都是每个夏天必不可少的时尚单品,不仅可以为我们的装扮增添亮点,更能够有效保护我们的眼睛。无
  • 时尚卫衣套装,展现青春活力
    时尚卫衣套装,展现青春活力
    2023-12-11
    时尚卫衣套装,展现青春活力.时尚卫衣套装一直是年轻人衣橱中的必备单品,它不仅可以给人带来舒适的穿着体验,更能展现出青春活
  • 保暖舒适羊毛大衣
    保暖舒适羊毛大衣
    2024-01-05
    保暖舒适羊毛大衣.冬季来临,寒冷的天气让人们更加注重保暖。在这个时候,一件保暖舒适的羊毛大衣成为了许多人的首选。羊毛大衣
  • 时尚皮质外套,展现酷帅摩登魅力
    时尚皮质外套,展现酷帅摩登魅力
    2024-01-05
    时尚皮质外套,展现酷帅摩登魅力.时尚和酷帅并不矛盾,皮质外套正是展现这种摩登魅力的最佳选择。无论是潮流的时尚圈还是街头的
  • 轻盈雪纺衬衫,打造清新淑女形象
    轻盈雪纺衬衫,打造清新淑女形象
    2023-12-31
    轻盈雪纺衬衫,打造清新淑女形象.雪纺材质的衬衫一直以来都是清新淑女形象的代表,它轻盈飘逸的质地,柔软透气的触感,让人仿佛
  • 优雅复古半身裙,散发优雅复古气息
    优雅复古半身裙,散发优雅复古气息
    2024-01-15
    优雅复古半身裙,散发优雅复古气息.复古是一种永不过时的时尚趋势,它总能让人们联想到过去的美好时光。而半身裙则是女性衣橱里