首页 > 其他分享 >O开放封闭原则OCP

O开放封闭原则OCP

时间:2023-09-05 14:55:34浏览次数:34  
标签:原则 封闭 可变 扩展 修改 软件 OCP 开放

Open - ClosedPrinciple ,OCP, 对扩展开放,对修改关闭(设计模式的核心原则)

定义

一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭. 意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的,一个 好的系统是在不修改源代码的情况下,可以扩展你的功能. 而实现开闭原则的关键就是抽象化.

原则分析

  1. 当软件实体因需求要变化时, 尽量通过扩展已有软件实体,可以提供新的行为,以满足对软件的新的需求,而不是修改已有的代码,使变化中的软件有一定的适应性和灵活性 。已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。
  2. 实现开闭原则的关键就是抽象化 :在"开-闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色..即要预知可能变化的需求.又预见所有可能已知的扩展..所以在这里"抽象化"是关键!
  3. 可变性的封闭原则:找到系统的可变因素,将它封装起来. 这是对"开-闭"原则最好的实现. 不要把你的可变因素放在多个类中,或者散落在程序的各个角落. 你应该将可变的因素,封套起来..并且切忌不要把所用的可变因素封套在一起. 最好的解决办法是,分块封套你的可变因素!避免超大类,超长类,超长方法的出现!!给你的程序增加艺术气息,将程序艺术化是我们的目标!

例子

设计模式中模板方法模式和观察者模式都是开闭原则的极好体现。

标签:原则,封闭,可变,扩展,修改,软件,OCP,开放
From: https://www.cnblogs.com/kisshappyboy/p/17679544.html

相关文章

  • 开放式互连系统参考模型(七层模型)
    7.应用层协议FTP:20/21(服务器协议)(20发送数据21建立控制连接)TELNET:23(远程协议)HTTP:80(超文本协议)HTTPS:443(加密超文本协议)SSH:22(高级远程)SMTP/POP3:25/110(邮件传输协议)DHCP:67/68(动态主机配置协议)()BGP:179(边界网关协议)RIP:520(路由信息协议)DNS:53(域名解析协议)TFTP:696.表示层:主要......
  • EasyPlayer开放外部录像接口:自由扩展H.265网页播放功能
    EasyPlayer通过实现视频实时录像功能,不仅提供轻量化、便捷化的视频资源下载能力,同时有效减少了带宽和计算资源的消耗。这种创新的功能使得用户可以灵活地获取所需的视频数据,为其节省使用成本并提升整体效率。今天我们来分享一下EasyPlayer播放器对外开放录像的方法。1)在播放器内部......
  • 开放同飞,华为云发布盘古大模型全域协同生态
    本文分享自华为云社区《开放同飞,华为云发布盘古大模型全域协同生态》,作者:华为云头条。近日,主题为“开放同飞,共赢行业AI新时代”的华为云盘古大模型主题论坛在北京召开,华为云EI服务产品部部长尤鹏、多位华为云盘古大模型领域专家及客户、伙伴发表主旨演讲,就AI大模型发展趋势、技术......
  • App开放接口API安全性—Token签名sign的设计与实现
    在app开放接口API的设计中,避免不了的就是安全性问题。 一、https协议对于一些敏感的API接口,需要使用https协议。https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。 二、签名设计原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后......
  • 国内ERP对接各大零售平台开放文档
    前言写这篇文章目的在于笔记,两年开发经验,对接过美团和抖音b2c模式、还有o2o配送平台相关业务,刚开始我也挺懵的,完全搞不懂我们ERP属于哪个主体,平台主体如何对应我们系统主体,授权方式,扣费方式...现在在下面都做下整理接入主体不管你们公司ERP(后续简称为ERP)准备对接哪个平台的......
  • Web服务器项目中常问的开放性问题
    文章目录一、对后端开发的看法?二、为什么要做静态http服务器?三、为什么要使用ET模式?四、多线程编程的注意事项1、为什么要用多线程2、多线程编程的特点3、确保线程安全的几种方式4、与多线程有关的编程方法五、使用Linux系统有什么好处?六、对云计算的看法?七、服务器突然崩溃退出,怎......
  • Galaxy Studio星河工作室于8月26日正式使用Canva可画网页版对室徽进行重绘!还开放了名
    GalaxyStudio星河工作室于8月26日正式使用Canva可画网页版对室徽进行重绘!还开放了名片模板?据了解,GalaxyStudio星河工作室室长于8月26日对使用Canva可画网页版室徽正式重绘!新室徽到底怎么样呢?让大家都来看看吧!怎么样?不错吧!对了!还有一个名片模板,想要使用的成员可以找QQ2789617......
  • Linux下MySql开放访问权限
    在Linux下安装完数据库后,局域网内无法访问。 设置方法:1.停止mysql,进入/etc/mysql/,编辑my.cnf,找到bind-address的配置,改为0.0.0.0,然后启动mysql2.登录mysql,进入mysql数据库,执行updateusersethost='%'wherehost='127.0.0.1'anduser='root',执行完成后再使用命令flushprivileg......
  • 项目学习 鱼皮 API 开放平台 stateful-backend 项目总结
    项目介绍用户中心功能介绍提供了一套基于Session的用户中心,提供以下功能登入登出注册用户信息管理增删改查登录用户查询ID查询列表查询分页查询用户态记录数据库表createtableuser(idbigintauto_incrementcomment'id'......
  • 08.25 北京站|阿里云 Serverless 技术实践营( AI 专场)开放报名
    往期回顾:活动回顾|阿里云Serverless技术实战与创新成都站回放&PPT下载活动简介阿里云Serverless技术实践营(AI专场)是一场以聚焦企业级AIGC应用开发与落地展开的主题活动,活动受众以关注Serverless和AI技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲......