面向对象的设计原则(2):OCP

OCP 开闭原则:即使是心脏移植,也不要切断血管 摘要:开闭原则(OCP)的现代实践 开闭原则要求软件"对扩展开放,对修改关闭"。2024-2025年的解读更强调组合、策略模式和插件架构,而非传统继承。核心在于识别变化点并封装在稳定接口后,使新增功能只需添加而非修改代码。典型反例是条件判断大杂烩,会导致回归测试地狱;解决方案是通过多态与依赖反转,将变化部分抽象为接口实现。虽然OCP降低了回归风险,但也增加了抽象复杂度和降低了代码直观性。关键记忆点:通过接口扩展功能(如新增Triangle类)而非修改核心逻辑(如draw_shape函数) 阅读详情
太出名了,不再多谈。主要有两点
 (1) Open for extension
 (2) Closed for modification
 Robert.C.Martin举了一个Shape的例子来说明问题。关键的思想是,如果我们预测到了变化,就可以设计一个抽象来隔离它。但是无论模块是如何得"封闭",都会存在一些无法对之封闭得变化。这需要设计人员对于他设计得模块应该对那种变化封闭作出选择,他必须猜测出最有可能发生变化的种类。然后构造抽象来隔离。这种预测能力需要经验的积累!! 并且通常情况下都会猜测错误,怎么办,Martin给我们指出了一条道路:
 (1)只受一次愚弄
 我们愿意被第一颗子弹击中,然后我们会确保自己不再被同一支枪发射的任何子弹击中
 (2) 刺激变化:
 第一颗子弹来的越早、越快对我们越有利:首先编写测试,使用很短的迭代周期,尽早、经常的把软件展示给客户

 OCP是面向对象设计的核心所在,遵循这个原则可以带来巨大的好处,但是肆意的抽象同样不是一个好注意,拒绝不成熟的抽象和抽象本身一样重要!!!

基于紫光同创FPGA的adf网表文件使用和黑匣子设置 这个时候就可以选择将你的网表文件给到他使用,就是相当于把你的功能模块封装成了一个黑匣子一样,只有外部端口,没有内部代码;,在TOP层的子模块声明里面需要加上/*synthesis syn_black_box */进行黑匣子设置,此时子层 adf 文件作为黑盒是不会综合的,在 device map 时会将顶层综合结果与子层 adf 文件合并传递至布局布线阶段;这些都设置完毕后呢,就可以对工程进行编译和综合了,综合完毕后会生成一个.adf的网表文件,我们要使用的就是这个文件;我这里是把两个子模块的添加了哈; 阅读详情

相关推荐

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

OCP与其他设计原则的关系

OCP:(开闭原则)可以在不必修改源代码的情况下改变这个模式的行为          用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层          抽象化是关键          对可变性的封装原则 里氏替换原则         里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。         里氏替换原则是对OCP的补充。实现OC

Demon_huirong的博客 785

西电计组实验二 运算器实验

算术逻辑运算实验 一.实验目的   1.了解简单运算器的数据传输通路。   2.验证运算功能发生器的组合功能。   3.掌握算术逻辑运算加、减、与的工作原理。   4.验证实验台运算的8位加、减、与、直通功能。   5.按给定数据,完成几种指定的算术和逻辑运算。 二.实验原理   算术逻辑单元ALU的数据通路如图2-1所示。其中运算器ALU181根据74LS181的功能用VHDL硬件描述语言编辑而成,构成8位字长的ALU。参加运算的两个8位数据分别为A[7…0]和B[7…0],运算模式由S[3…0]的16种

Polaris的博客 1万+

面向对象设计的七大设计原则详解

面向对象的七大设计原则 文章目录面向对象的七大设计原则简述七大原则之间的关系一、开闭原则(The Open-Closed Principle ,OCP)概念理解系统设计需要遵循开闭原则的原因开闭原则的实现方法一个符合开闭原则的设计开闭原则的相对性二、 里氏替换原则(Liskov Substitution Principle ,LSP)概念理解里式替换原则的优点重构违反LSP的设计三、 迪米特原则...

夕虞的博客 7万+

Oracle EBS R12 AP模块发票导入接口实战:从SQL插入到API调用的完整流程

本文详细解析了Oracle EBS R12 AP模块发票导入接口的完整流程,从SQL插入到API调用的实战技巧。涵盖接口表设计、数据验证、双通道导入机制及错误诊断,特别分享官方文档未提及的高阶优化方案,助力企业实现财务数字化转型。

weixin_33728268的博客 475

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1263

[面向对象六大原则] 开闭原则(OCP)

开闭原则 - Open Close Principle开闭原则是Java中最基础的设计原则,它可以帮助我们建立一个稳定、灵活的系统。定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。当软件的需要发生变化时,我们应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。(因为在对原有代码修改的时候,可能引入新的bug,破坏原有系统。实际开发时往往是修改、扩展同...

dandelionela的博客 770

基于Jetson Nano与YOLOv5s的无人机道路抛洒物实时检测系统【附数据集+代码】

本文详细介绍基于Jetson Nano与YOLOv5s的无人机道路抛洒物实时检测系统,通过硬件选型、数据采集、模型优化等关键步骤,实现高效的道路安全监控。系统结合无人机高空视角和YOLOv5s算法,能精准识别各类抛洒物,实测准确率达98.2%,为交通管理提供智能化解决方案。

weixin_29081163的博客 1453

面向对象设计原则--开闭原则(OCP)

OCP–Closed for Modification;Open for Extension. 开闭原则要求软件有一个良好的基本结构,确保面对变化的时候,仅仅扩展而不是修改现有对象的组织框架就可以随需而动.但我们知道越是这样趋于道可道非常道的内容就越难以找到一个固定的方式达成,我们可以举出很多例子指出这样或那样是违反开闭原则的,但不容易展示怎样才是开闭原则,原因在于影响软件变化的原因很多....

蛋子哥的博客 1409

银河麒麟V10等保加固清单:安全基线配置一篇搞定(附逐项检查表)

通过限制使用SSH直接以root身份登录,禁用公钥登录的方式加强SSH服务的安全性。更改SSH默认端口可在一定程度上防止被黑客使用大批量扫描方式攻击。通过修改SSH的配置文件限制可以使用SSH服务远程管理的主机。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 817

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2946

面向对象设计原则(二):开放-封闭原则(OCP)

开放-封闭原则(Open-closed principle,OCP)也称开闭原则,是面向对象设计(OOD)中比较重要的一种,下面来总结开放-封闭原则的知识点,包括:1、什么是开放-封闭原则?2、为什么需要遵守开放-封闭原则?3、怎么做到开放-封闭原则?4、开放-封闭原则需要注意什么?

tjiyu的博客 4930

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2247

第2章 面向对象的设计原则(SOLID):6_开闭原则

6. 开闭原则(Open Closed Principle,OCP) 6.1 定义 (1)一个类应该对扩展开放,对修改关闭。要求通过扩展来实现变化,而且是在不修改己有的代码情况下进行扩展,也不必改动己有的源代码或二进制代码。 (2)在软件生命周期内,变化是一个既定的事实,在设计时尽量适应这些变化,以提高项止的稳定性和灵活性,真正实现“拥抱变化”。而开闭原则告诉我们要通过扩展来实现这些变化而不...

CherishPrecious的博客 246

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

2024年最全开闭原则——面向对象设计原则,使用开闭原则解决实际问题(2),Golang面试必问

开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。

2401_84910683的博客 791

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c++ 不允许使用抽象类类型的对象_面向对象基础设计原则:2.开闭原则

开闭原则(Open-Close Principle,简称OCP)是指一个软件实体(类、模块、方法等)应该对扩展开放,对修改关闭。遵循开闭原则设计出来的模块具有两个基本特征:对于扩展是开放的(Open for extension):模块的行为可以扩展,当应用的需求改变时,可以对模块进行扩展,以满足新的需求。对于更改是封闭的(Closed for modification):对模块行为扩展时,不必改动...

weixin_32861907的博客 1952

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

第2章 面向对象设计原则(单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则概念)

单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则概念

weixin_51823785的博客 159

面向对象设计原则(二)开闭原则

面向对象设计原则之开闭原则 开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。 开闭原则的定义 开闭原则由Bertrand Meyer于1988年提出。其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件 实体应尽量在不修改原有代码的情况下进行扩展。 现在软件设计面临的一个重要...

liuzihaoboy的博客 405

面向对象设计原则

在使用面向对象的思想进行系统设计时,前人共总结出了7条原则,它们分别是: 单一职责原则、开闭原则、里氏替换原则、依赖注入原则、接口分离原则、迪米特原则和优先使用组合而不是继承原则。 1.单一职责原则(SRP) 单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。它的英文缩写是SRP,英文全...

weixin_30872671的博客 69

【OCP】开闭原则

开闭原则(The Open-Close Principle, OCP)是Bertrand Meyer在1988年提出的,该设计原则认为:设计良好的计算机软件应该易于扩展,同时抗拒修改。什么样的设计才能应对需求的变更,且可以保持相对稳定呢?这就是开放—封闭原则(The Open-Close Principle, OCP)所要解答的问题。“开放”和“封闭”这两个互相矛盾的术语分别用于实现不同的目标。

thinking-fish的博客 1358

面向对象设计原则:开闭原则(OCP)

开闭原则,OCP

乐于分享,共同成长 1594

面向对象设计原则之开闭原则

开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand  Meyer于1988年提出,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。       在开闭原则的定义中,软件实体可以指一个软件模块、

刘伟技术博客 5万+

【设计原则】开闭原则(OCP):如何设计可扩展的代码

一个软件实体应当对扩展开放,对修改关闭。也就是说软件实体应尽量在不修改原有代码的情况下进行扩展。(在开闭原则的定义中,软件实体可以是一个软件模块、一个由多个类组成的局部结构或一个独立的类)

OpenSeek的博客 1079

设计原则—SOLID(OCP)

开闭原则的英文全称是 Open Closed Principle,简写为 OCP。它的英文描述是:software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification。 那是因为,扩展性是代码质量最重要的衡量标准之一。在 23 种经典设计模式中,大部分设计模式都是为了解决代码的扩展性问题而存在的,主要遵从的设计原则就是开闭原则。

3万+

深入理解设计原则之开闭原则(OCP)【软件架构设计】

开闭原则(Open Closed Principle, OCP),又称为对扩展开放、对修改关闭原则。开闭原则即是SOLID原则中最难理解、最难掌握的,又是最有用的。之所以说开闭原则最难理解,是因为“怎样的代码改动才被定义为扩展?怎样代码的改动才被定义为修改?怎样才算满足或违反开闭原则?修改代码就一定意味着违反开闭原则吗?等问题都比较难理解。之所以说开闭原则最难掌握,是因为如何做到对扩展开放,对修改关闭?如何在项目中灵活应用开闭原则避免在追求高扩展的同时影响代码的可读性等问题都很难掌握。

weixin_30197685的博客 2340

【温故】设计原则: 开闭原则

最近在读《敏捷软件开发 原则、模式与实践》,里面提到了几大设计原则,于是想复习下,并且用C#把文中代码重新写一遍。

ZZHSourceCode的博客 643
上一篇: 面向对象的设计原则(1):SRP
下一篇: 面向对象的设计原则(3):LSP
Andy
博客等级 码龄26年 115粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值