首页 > 其他分享 >面向对象的高级原则

面向对象的高级原则

时间:2023-06-29 13:37:15浏览次数:37  
标签:组件 原则 修改 高级 依赖于 面向对象 类型 应该


1、开放/封闭原则
模块应该对扩展开放,对修改关闭。
每个类型应该是固定的,不在未来有任何变化,更不要修改类型的源代码。即类型对修改关闭。
每次发生变化时,要通过添加新代码来增强现有类的行为,而不是修改原有代码。可以使用如下两种方式:
①用组合创建新的类型。
②使用安全干净的继承体系。
在类型继承中,应该仅仅添加新代码,不应该修改任何继承得到的上下文。

2、里氏替换原则子类应该可以替代基类使用。
并不是所有的子类都能安全地替换其基类使用。如何保证呢?
慎重处理sealed和virtual关键词。
虚方法不应该访问到私有成员,因为对私有成员的访问无法在重写中实现。

3、依赖倒置原则目的在于重用高层次的模块,而不是低层次的组件。
高层次的组件不应该依赖于低层次组件,二者均应依赖于接口。
抽象不应该依赖于细节,细节应该依赖于抽象。
依赖倒置原则经常是指控制反转。

 

 

标签:组件,原则,修改,高级,依赖于,面向对象,类型,应该
From: https://blog.51cto.com/u_3319687/6581466

相关文章

  • rtos中,线程设计原则
    设计原则:运行时间长的线程的优先级应较低;一个线程完成一个功能;可重入函数:可重入函数,可被中断,在这个函数执行的任何时刻可以中断它,转入执行另一段代码,返回时,不会出现什么错误;多任务系统下,中断可能在任务执行的任何时间发生,一个函数的执行期间被中断后,到重新恢复到断点进行执......
  • 逍遥自在学C语言 | 函数初级到高级解析
    前言函数是C语言中的基本构建块之一,它允许我们将代码组织成可重用、模块化的单元。本文将逐步介绍C语言函数的基础概念、参数传递、返回值、递归以及内联函数和匿名函数。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一......
  • Git高级
    目录一、git多分支二、git远程仓库三、ssh方式链接远程仓库四、协同开发4.1多人协同开发五、冲突解决六、线上分支合并七、远程仓库回滚(你不要去做)八、为开源项目贡献代码九、git工作流,gitpull,gitfetch和变基十、pycharm操作git一、git多分支#分支操作0查看分支gitb......
  • 这份Github标星30K的神仙面试笔记 ,包含了所有Android中高级大厂知识面试题!!!
    作为一个Android程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到Bug修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪50万,而自己却囊中羞涩。于是你也想看看新机会,找个新平台,好好发展。但是面试的时候,当那个笑眯眯的......
  • 面向对象之魔术方法(内置方法),反射,异常之自定义异常
    魔术方法(内置方法)(面试题)#类里面内置的双下划线开头的一些方法,他们具有特殊的功能,我们称之为是魔术方法,简称魔法比如:__init__"""魔术方法的学习只需要掌握每个方法什么时候触发或者执行"""1.__str__,__repr__方法#__str__,__repr__方法classStudent():def_......
  • 面向对象之绑定方法,非绑定方法,隐藏属性,property装饰器,三大特征
    绑定方法#绑定给类的方法#绑定给对象的方法classStudent():school='SH'def__init__(self,name,age,gender):#self:对象自己self.name=nameself.age=ageself.gender=gender#这个就是绑定给对象的方法,有......
  • 十九、面向对象编程
    十九、面向对象编程类与对象类是总结事物特征的抽象概念,是创建对象的模板。对象是按照类来具体化的实物。类的构成类的名称:类名类的属性:一组参数数据类的方法:操作的方式或行为类的创建#classPeople(object):新式类classPeople():经典类classPeople(object):#类......
  • 面向对象程序编程6-8次PTA题目集(成绩计算系列)的总结性Blog
    1.对之前发布的6-8次PTA题目集(成绩计算系列),内容要求如下:(1)前言:总结之前所涉及到的知识点、题量、难度等情况第六次PTA题目集:知识点:此次PTA题目仅只有这一个题目,主要考的内容就是对类的使用(类似现实,对有关联的各个数据合并在一起,便于一起使用),运用正则表达式(比较苦难使用,要记住那......
  • 11-gorm-V2-04-高级查询
    @目录1.用Struct或Map接收数据1.1Find到Struct1.2Find到Map2.子查询3.Group/Having3.1Group完整示例3.2Having4.变量4.1使用sql.Named定义4.2使用map定义变量5.用Rows()迭代6.查钩子7.Pluck(单列查询)8.Scopes(调用查询函数)8.1使用8.2示例9.Count1.用Struct或Map......
  • 2023年最新Android Framework源码高级笔记+学习路线图+硬核资料库,跪着啃完了。。。
    虽然疫情已经过去,餐饮、旅游一些实体经济迅速回暖,但是互联网的寒冬却还没有过去,很多大厂都在裁员,裁员比例还挺高,我们一千多人的公司就直接裁掉30%。今年的各大公司基本只有两个目标:一个是营收,那些投入产出比不高的项目或者事情都暂时搁置,可做可不做的就不做;另外一个就是降本增效,通......