| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python:面向对象编程的设计原则之接口隔离原则 -> 正文阅读 |
|
[Python知识库]python:面向对象编程的设计原则之接口隔离原则 |
一,所谓的接口接口,在不同的上下文环境中拥有不同的含义。 在面向对象编程的语义中,接口就指属性与方法,它们被封装到类中,作为对象应该具备的属性与行为。 在OOP中,所有的设计原则都是关注如何高效地设计接口并如何将它们应用于对象之间的交互的方法理论的总结。 二,继承继承是扩展代码功能、提高代码可重用性的高效方式。 (一)类的继承从设计者的角度来看,类是封装逻辑和数据的另一种方式,继承是一种定义类之间逻辑和数据关系的方式:类定义了一组属性与方法,可由更具体的集合(子类)进行继承和定制。 继承产生了一个名为 “is-a” 的链接关系。举个例子:员工是人类,人类是哺乳动物,哺乳动物是动物。
python还支持多继承:
正式这种多继承机制,让 python 的类设计上更具统一性与扩展性。比如与 Java 类的单继承相比,python 类的多继承能力能统一了 Java 中 (二)命名空间与作用域类对属性与方法的封装、模块对代码块的收集、包对模块的收集、库对包的收集,都会创造各自的命名空间。 命名空间就是对名称的封装。命名空间的存在就是为了尽量避免名称冲突。 命名空间隐含了名称之间的包含关系,这种关系通过
Python创建、改变或查找名称都是在所谓的命名空间中进行的。在源代码中名称被定义的位置决定了这个名称能被访问到的范围,即所谓的作用域。 (三)解析顺序具像上面显示的那样,当我们对 显然,这个搜索顺序是相当重要的:
三,接口隔离原则(一)一个接口设计的例子
有一个 Mammals 父类,其中有两个方法。有两个子类,其中分别由三个方法(前两个重写,一个自定义)和一个方法(重写)。 对于继承 Mammals 的 Human 类来说,父类的提供的接口还不够,因此进行了扩展。 但对于继承 Mammals 类的 Whale 类来说,父类提供了过多的接口,这对于不需要 walk 的它来说,walk 成了增加负担、造成错误的一个原因。 (二)接口隔离原则接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含调用者感兴趣的方法。 从这个意义上说,ISP 告诉我们,一个类应该只具有所需的接口,并避免那些不起作用或没有理由成为该类的一部分的方法,从而保持子类的内容精炼整洁。 可以使用抽象基类实现接口中的方法,也可以使用普通类。 修改后的代码:
四,接口隔离原则与单一职责原则ISP 要求为子类提供最小接口的思想与 SRP 紧密相关,前者可作为后者的依据之一。 但最需要明确的是,两者的出发点不同:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 20:55:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |