设计模式,究竟有着怎样的力量?(初读修言老师设计模式)

news2025/1/12 22:47:46

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。 —— Christopher Alexander

设计模式是“拿来主义”在软件领域的贯彻实践。和很多人的主观臆断相反,设计模式不是一堆空空如也、晦涩鸡肋的理论,它是一套现成的工具 —— 就好像你想要做饭的时候,会拿起厨具直接烹饪,而不会自己去铸一口锅、磨一把菜刀一样。

用做数学题来打比方,可能大家会更能体会这种概念 —— 我们解题目的时候,往往会用到很多公式/现成的解题方法。比如已知直角三角形两边长,求另一边,我们会直接用勾股定理(我想应该没有人会每求一次边长都自己推一遍勾股定理才用吧)。

识别题目特征 —— catch题目想要考查的知识点 —— 快速在脑海中映射出它对应的解决方法,这个过程在我们学生时代几乎是一个本能的、条件反射一样的脑回路机制。

SOLID设计原则

设计原则是设计模式的指导理论,它可以帮助我们规避不良的软件设计。SOLID 指代的五个基本原则分别是:

  • 单一功能原则(Single Responsibility Principle)
  • 开放封闭原则(Opened Closed Principle)
  • 里式替换原则(Liskov Substitution Principle)
  • 接口隔离原则(Interface Segregation Principle)
  • 依赖反转原则(Dependency Inversion Principle)

设计模式的核心思想——封装变化

设计模式出现的背景,是软件设计的复杂度日益飙升。软件设计越来越复杂的“罪魁祸首”,就是变化。

这一点相信大家不难理解——如果说我们写一个业务,这个业务是一潭死水,初始版本是 1.0,100 年后还是 1.0,不接受任何迭代和优化,那么这个业务几乎可以随便写。反正只要实现功能就行了,完全不需要考虑可维护性、可扩展性。

但在实际开发中,不发生变化的代码可以说是不存在的。我们能做的只有将这个变化造成的影响最小化 —— 将变与不变分离,确保变化的部分灵活、不变的部分稳定。

这个过程,就叫“封装变化”;这样的代码,就是我们所谓的“健壮”的代码,它可以经得起变化的考验。而设计模式出现的意义,就是帮我们写出这样的代码。

在这里插入图片描述

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

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

相关文章

HBase的Region Split详解

什么是Region Split region split是hbases水平扩展一个重要因素。随着数据的不断写入,将一个region切分为两个小region,并将切分后的region放在不同的节点上,以达到将负载进行均衡到其他节点。 Region Split的流程 在zookeeper的/hbase/regio…

从股票市场选择配对的股票:共同趋势协整模型

让我们回忆一下共同趋势模型。给定两个时间序列和,我们有 其 中和是随机游走,即非平稳部分,或者说共同趋势部分(common trends)。以及是平稳的部分,即特定部分(specific component)。如果两个时间序列是协整…

归并排序应用——剑指 Offer 51. 数组中的逆序对

文章目录题目1.错误示范2. 分析逆序对的判断统计出某个数后面有多少个数比它小举例(完整过程解析)第一次循环第二次循环第三次循环第四次循环第五次循环循环结束的两种存在情况3. 正确代码4.递归展开图题目 1.在数组中的两个数字,如果前面一个数字大于后面的数字&am…

全球发展,布局城市核心区域,放眼世界看郁锦香酒店有多百变

随着消费需求的不断升级,酒店消费场景也进行着多元化的发展,城市高端度假品牌正积极溯源消费需求,寻得品牌文化延伸的可靠路径。同时,各大酒店品牌也加快在市场布局的脚步,希望通过布局城市核心区域获得可持续发展的更…

鸿蒙所谓的软总线

鸿蒙网上资料 分布式软总线组件 简介 由于设备通信方式多种多样(WIFI、蓝牙等),不同通信方式使用差异大,问题多。同时通信链路的融合共享和冲突无法处理。分布式软总线实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现连…

IFR202型红外雨量传感器

IFR202型红外雨量传感器是专用于测量降雨量的仪器,拥有知识产权,采用光学扫描原理,实现雨滴大小及雨滴数量的实时扫描,进而计算出降雨量输出。支持脉冲输出与RS232输出当使用脉冲输出功能时,可以完全替代翻斗式雨量计。…

【电巢】三星核心供应商名单公布,删除京东方新增13家(附103家厂商名录)

前言 11月30日,据韩媒The ELEC报道,三星在最新公布的「供应商名单」中,悄然删除了国内企业京东方、群创,以及日企阿尔卑斯电气、日东电工、罗姆等10家企业,同时,新增了舜宇光学、Simmtech等13家企业。 以下…

Self-Attention 、 Multi-Head Attention 、VIT 学习记录及源码分享

这里写目录标题1 参考资料2 重点记录2.1 Self-Attention2.2 Multi-Head Attention3. Vision Transformer(VIT)3.1 纯VIT3.2 Hybrid VIT4 代码使用前言:想要看懂VIT中的一些内容,需要的基础知识点就是自己跑过一些CV方向的Demo,知道常见CV领域…

ADI Blackfin DSP处理器-BF533的开发详解13:LDF内存分配的详解(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 ADSP上的LDF(Linker Description Files)连接器描述文件是处理器用来进行资源分配的文件,通过对LDF文…

中国新能源汽车产销量居世界第一,SCM系统实现企业订单可持续高效流转

近年来,中国汽车产业发生了翻天覆地的变化,而新能源汽车正是这一巨变的中坚力量。从不足10万辆,到突破千万辆,新能源汽车在国家政策扶持下,产品供给不断丰富、企业创新活力竞相迸发、使用环境日臻完善以及消费者认可度…

【MOOC】数据结构-2022秋期末考试

判断题 T 解析 第一个地址为2,第二个地址为21,第三个地址为24,第四个为29,即下标为0。 T 解析 在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。 F 解析 应该是当且仅当该树是满二叉树 F 解析 应该是交换次…

ABAP中的类与对象(Local class )

文章目录1 Definition1.1 What is the object?1.2 Differentiation of classes2 Factor of class2.1 classification2.2 Class Definition3 Access area4 Create local class4.1 Define the project of class (Attributes , Method, Event)4.2 Implement method of …

【C++进阶】哈希(万字详解)—— 学习篇(上)

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

成功的软件项目管理的职责和方法

软件项目管理是指项目管理的一个分支,专注于软件和Web项目的规划、资源分配、执行、跟踪和交付。软件开发领域的项目管理不同于经典的项目管理,因为软件项目有一个特殊的生命周期,包括多轮测试、更新和客户反馈。大多数IT项目都依赖敏捷方法来…

简介Object类+接口实例(深浅拷贝、对象数组排序)

本期目录前言一、初识Object类🍑1、toString()🍑2、hashCode()🍑3、equals()🍑4、clone()三、对象的深浅拷贝🍑1、浅拷贝🍑2、深拷贝🍑3、深浅拷贝的特点二、对象数组排序🍑1、通过C…

什么是BadUSB攻击以及如何预防

BadUSB 攻击是指 USB 设备存在内置固件漏洞,该漏洞允许自身伪装成人机接口设备。一旦连接到其目标计算机,BadUSB 就可以谨慎地执行有害命令或注入恶意负载。 一种常见的BadUSB攻击类型是橡皮鸭。它可以通过使用使用隐藏漏洞创建的闪存驱动器来执行&…

第二证券|卡塔尔给体育烧的钱,不止世界杯

11月,世界杯史上首次在北半球冬季打响。 全世界的目光也聚焦到了卡塔尔——这个面积仅11576平方千米、人口不足300万的中东小国。 虽然面积小,卡塔尔人花钱却很大方。 本届世界杯总计2200亿美元的投入,为历届世界杯花费之最。巴西世界杯和俄…

java基于springboot的新生宿舍管理系统-计算机毕业设计

项目介绍 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新生宿舍管理系统当然也不能排除在外。新生宿舍管理系统是以实际运用为开发背景,运用软件工程原理和开发…

海外社媒运营,推特内容营销

Twitter 成立于 2006 年,已成为全球第三大用户社交平台,月活跃用户达 3.89 亿。推特最大的特点就是字数限制和信息短小,正好符合现代人的阅读习惯。 对于跨境卖家来说,推特不仅可以获取有价值的客户信息,收集粉丝反馈…

大学电子系C++模拟考试之一

随手附上一些代码,未必是最优解,仅供参考。 加密四位数 【问题描述】 输入一个四位数,将其加密后输出。方法是将该数每一位的数字加9,然后除以10取余作为该位上的新数字,最后将千位上的数字和十位上的数字互换&#…