设计模式再探——宏观篇

目录

  • 一、背景介绍
  • 二、思路&方案
  • 三、过程
    • 1.宏观介绍
    • 2.目的与意义
    • 3.七大原则的定义与边界
    • 4.思路由来
  • 四、总结
  • 五、升华

一、背景介绍

最近在做产品技术建模的过程中,一些地方刻意用到了设计模式,而一些地方也用到了但是并不是很明确。

于是乎就带着这个疑惑来再探设计模式的宏观;也查阅了自己的博文:

  • 1.14年有宏观(第一层看山是山,知道了有设计模式以及七大原则这个东西)、
  • 2.21年有宏观(第二层看山不是山,看着那些模式和原则结合自己曾经的项目经历,让自己逐渐模糊了,设计模式到底有什么用?为什么好多地方都说他伟大?)
  • 3.现在有宏观(第三层不是山也是山,揭开通过设计模式训练抽象思想的面纱)

题外话:数字化世界的好处在这里充分的体现出来了,能够让我们跨越年份进行复盘回顾的时候依据很具体明确;这是一个未来趋势,你愿意在数字世界充分留有自己的足迹嘛?

二、思路&方案

  • 1.宏观介绍
  • 2.目的与意义
  • 3.七大原则的定义与边界
  • 4.思路由来

三、过程

1.宏观介绍

百度百科定义:软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

扩展(设计模式与下面两个概念的关系是?):
面向对象(抽象基础;封装、继承、多态特征)
软件工程(可复用、可扩充、可维护)

2.目的与意义

目的:基于面向对象,实现软件工程
意义:训练抽象思想,形成封装变化、对象间松耦合、针对接口编程下意识的行为

3.七大原则的定义与边界

开闭原则:模块应对扩展开放,而对修改关闭
边界:1.扩展为增加新代码;修改是修改原来的代码(包括属性、方法、类);

单一职责原则:就一个类而言,应该仅有一个引起它变化的原因
边界:类内的属性修改和方法调用;产生的多余一个的动机;那么该类就需要再拆分职责

里氏代换原则:如果调用的是父类的话,那么换成子类也完全可以运行
边界:保证子类继承(复用)父类的所有属性和方法都是可用的

接口隔离原则:一种角色,不多不少,不干不该干的事,该干的事都要干
边界:返回的对象只能拥有强转成父类对象的行为;涉及到一个向上强转的知识

依赖倒转原则:高层模块不应该依赖于底层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象
边界:任何一个业务类的定义都必须有接口或者抽象类;面向抽象类或者接口编程

迪米特法则:一个软件实体应当尽可能的少与其他实体发生相互作用
边界:降低类间耦合;一个类要协调其它类来处理事情,那么只需要协调一个类来给处理就好了

合成复用原则:少用继承,多用合成关系来实现
边界:使得继承这种强耦合的关系减弱,有明确父子关系吗?可以用组合聚合来实现嘛?

4.思路由来

定义边界,进行遍历;像洋葱一样一层一层的剥开

四、总结

  • 1.面向对象不仅仅是我定义了类,实现了接口,实例化出来对象去实现了业务;还要必须让定义的类符合七大原则
  • 2.一个产品的生命力,决定了起初的宏观定位,基于软件工程的定位去做技术建模
  • 3.代码如人生,代码如此-抽象思想和能力(复用性多高、扩充性多强、维护性多低),人生亦如此-感悟灵魂的升华(渡己频率、渡人频次)

五、升华

庆幸自己还可(天时)回头望、还能(地利)回头望、还在(人和)回头望;轻舟已过万重山。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

容器核心技术之Namespace与Cgroup

容器是一种流行的虚拟化技术,它允许我们在同一台计算机上与其他进程在独立环境中运行进程。那么容器是如何做到这一点的呢?为此,容器是从 Linux 内核的一些新功能构建的,其中两个主要功能是“namespace”和“cgroup”。 1.Namespa…

蓝桥杯 题库 简单 每日十题 day5

01 字符计数 字符计数 题目描述 给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。 元音字母包括a,e,i,o,u,共五个,其他均为辅音字母。 输入描述 输入格式: 输入一行&#xff0…

形式化验证方法研究综述

摘要:形式化验证是证明软件、硬件或系统正确性的一种方法,近年来受到了越来越多的关注。 本文对形式化验证的研究进行了综述。首先介绍了形式化验证的基本概念,然后重点介绍了形式化验证的三种技术,包括模型检测、定理证明和等价性…

华为华三40G带宽互通连接测试

郁闷了几天了,今天竟然做了件爽事!慢慢说来。 今天下雨,下午娃上学,我送老婆去学校上课。之后到实验室,今年申请买的两台交换机正好送到: S5500V2-54S-EI:48个10/100/1000TX以太网端口&#x…

三维模型3DTile格式轻量化在数据存储的重要性分析

三维模型3DTile格式轻量化在数据存储的重要性分析 三维模型3DTile格式轻量化在数据存储中占有重要地位。随着科技的不断发展,尤其是空间信息科技的进步,人们对于三维地理空间数据的需求日益增长。然而,这类数据通常具有大尺度、高精度等特点&…

stdio.h

1.#include <corecrt.h> 1.1#include <vcruntime.h> 2.#include <corecrt_wstdio.h> 2.1#include <corecrt.h> 2.2#include <corecrt_stdio_config.h> 2.2.1#include <corecrt.h>

实例讲解Spring boot动态切换数据源

前言 在公司的系统里&#xff0c;由于数据量较大&#xff0c;所以配置了多个数据源&#xff0c;它会根据用户所在的地区去查询那一个数据库&#xff0c;这样就产生了动态切换数据源的场景。 今天&#xff0c;就模拟一下在主库查询订单信息查询不到的时候&#xff0c;切换数据…

nacos-api

登录 http://xx:8848/nacos/v1/auth/users/login?usernamexx&passwordxx 查询配置 http://xx:8848/nacos/v1/cs/configs?dataIdtest&grouptest&tenant5d24ca22-e3b0-4808-ba58-bbeeffa02195

[C++基础]-继承

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、模板的…

(23)认识Linq:序列与集合,延迟与缓存,链式与查询式,性能提升技巧

本文参考https://www.bilibili.com/video/BV1rx41157DS/?p6&spm_id_from333.880.my_history.page.click&vd_source2a0404a7c8f40ef37a32eed32030aa18 难度&#xff1a;中级 一、Enumerables与IEnumerable 1、什么是Enumerables? (1)Enumerabl…

LabVIEW崩溃问题解决方法

LabVIEW崩溃问题解决方法 LabVIEW在运行中出现崩溃的情况&#xff0c;确实让人很崩溃。不过按照下面的方法可以逐步排查解决。 在LabVIEW开发环境中浏览时&#xff0c;LabVIEW崩溃并显示以下错误&#xff1a; 解决方案 LabVIEW内部错误和崩溃的初步故障排除步骤&#xff1a;…

【蓝桥杯选拔赛真题62】Scratch判断小球 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch判断小球 一、题目要求 编程实现 二、案例分析 1、角色分析

bleve全文检索实现站内搜索(Go 搭建 qiucode.cn 之十)

一说到全文检索这个词时,最先蹦出在脑海中的必然是Elasticsearch,毕竟国内碗Java是多于其他编程语言的。 然而,这两者并不具有可比性,就像一个编程语言与另一个编程语言的较量,说这个编程语言优于那个编程语言。 每个编程语言的存在总是为了解决当下的问题,当然咯,一个项…

docker 操作redis

1查看容器 2进入容器 exec表示在运行的容器中执行命令it表示以终端交互的方式执行命令/bin/bash表示需要指定的命令 3进入容器后可通过redis-cli命令连接容器内的redis服务器&#xff0c;可通过set创建变量&#xff0c;get获取变量的值 4key * 查看所有key 通过ping 查看redi…

从CNN(卷积神经网络),又名CAM获取热图

一、说明 卷积神经网络&#xff08;CNN&#xff09;令人难以置信。如果你想知道它如何看待世界&#xff08;图像&#xff09;&#xff0c;有一种方法是可视化它。 这个想法是&#xff0c;我们从最后的密集层中得到权重&#xff0c;然后乘以最终的CNN层。这需要全局平均…

前端 JS 经典:apply、call、bind

1. 概念 都是用来改变函数中 this 指向的。区别在于 apply、call 传参方式不一样&#xff0c;调用后&#xff0c;直接执行函数。bind 调用后&#xff0c;返回一个函数体&#xff0c;不直接执行函数。 2. 为什么用 那为什么要改变 this 指向呢。正常情况下&#xff0c;谁调用…

安防监控视频云存储平台EasyNVR对接EasyNVS时,一直不上线该如何解决?

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。 近期有用户在使用安防视频平台EasyNVR对接上级平台EasyNVS时&#xff0c;出现了一直不上线…

CentOS 7 制作openssl 1.1.1w 版本rpm包 —— 筑梦之路

源码下载地址&#xff1a; https://www.openssl.org/source/openssl-1.1.1w.tar.gz 参考之前的文章&#xff1a; openssl 1.1.1L /1.1.1o/1.1.1t rpm包制作——筑梦之路_openssl的rpm包_筑梦之路的博客-CSDN博客 直接上spec文件&#xff1a; Name: openssl Version: 1.1…

10.5 串联型稳压电路(1)

稳压管稳压电路输出电流较小&#xff0c;输出电压不可调&#xff0c;不能满足很多场合下的应用。串联型稳压电路以稳压管稳压电路为基础&#xff0c;利用晶体管的电流放大作用&#xff0c;增大负载电流&#xff1b;在电路中引入深度电压负反馈使输出电压稳定&#xff1b;并且&a…

【全网最全】2023华为杯研究生数学建模B题完整思路+python代码+20页超详细启发式算法+FFT(后续会更新)

目录 点击资料获取入口 DFT在通信等领域的重要应用,以及目前采用FFT计算DFT的硬件开销大的问题。提出了将DFT矩阵分解为整数矩阵乘积逼近的方法来降低硬件复杂度。 建模目标是对给定的DFT矩阵F_N,找到一组K个矩阵A,使F_N和A的乘积在Frobenius范数意义下尽可能接近,即最小化目标…