感谢楷哥今天的精彩授课,感谢浩哥解释“耦合”(然妈咕咚),感谢玖宏弹唱《情非得已》
一、三大基本特征
(1)封装
(2)继承
(3)多态
二、五大基本原则
(1)单一职责原则(SRP)
(2)开放封闭原则(OCP)
(3)里氏替换原则(LSP)
(4)依赖倒置原则(DIP)
(5)接口隔离原则(ISP)
三、设计模式
(1)创建型模式
(2)结构型模式
(3)行为型模式
一、三大基本特征
转自博文:面向对象的三大基本特征,五大基本原则 - 风之之 - 博客园 (cnblogs.com)
(1)封装
封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
(2)继承
继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
(3)多态
多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
多态的优点:
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
多态存在的三个必要条件:
- 继承
- 重写(子类继承父类后对父类方法进行重新定义)
- 父类引用指向子类对象
简言之,多态其实是在继承的基础上的。比如说今天我们要去动物园参观动物,那么你说我们去参观兔子、参观绵羊、参观狮子、参观豹子都是对的,但你不能说我们去参观汽车。在这个例子中,子类具有多态性:除了使用自己的身份,还能充当父类。
二、五大基本原则
(1)单一职责原则(SRP)
一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作。
比如在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,其结果将会非常混乱,在这个假设下,职员类里的每个方法都要if else判断是哪种情况,从类结构上来说将会十分臃肿。
(2)开放封闭原则(OCP)
对象或实体应该对扩展开放,对修改封闭。
更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件!这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术!
(3)里氏替换原则(LSP)
在对象 x 为类型 T 时 q(x) 成立,那么当 S 是 T 的子类时,对象 y 为类型 S 时 q(y) 也应成立。(即对父类的调用同样适用于子类)
(4)依赖倒置原则(DIP)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。具体实现应该依赖于抽象,而不是抽象依赖于实现。
可以这样理解,我们先说了兔子和绵羊,然后才推出食草动物。但如果我们继续认识了牛、马等食草动物,我们会发现我们需要不断调整食草动物的描述,这样程序会变得僵化,所以我们不应该让子类依赖于实体,不应该让父类模块依赖于子类模块。所以我们需要将食草动物设计为抽象类,即抽象类或接口。这样下层只需要实现相应的细节而不会影响父类。
(5)接口隔离原则(ISP)
不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法,使用多个专门的接口比使用单个接口要好的多!
比如,为了减少接口的定义,将许多类似的方法都放在一个接口中,最后会发现,维护和实现接口的时候花了太多精力,而接口所定义的操作相当于对客户端的一种承诺,这种承诺当然是越少越好,越精练越好,过多的承过多的承诺带来的就是你的大量精力和时间去维护!
这些基本原则需要我们在使用面向对象编程中慢慢领会、总结。
三、设计模式
参考:(4条消息) python常见几种设计模式_jiangmingfei的博客-CSDN博客_python几种设计模式
(4条消息) Python常见设计模式_知识搬运工的博客-CSDN博客_python常见设计模式
什么是python的设计模式?
软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需谨记一点:设计模式是高层次的方案,并不关注具体的实现细节,比如算法和数据结构。对于正在尝试解决的问题,何种算法和数据结构最优,则是由软件工程自己把握。
设计模式共分为三大类,细分为23种设计模式。
- 创建型模式
- 结构型模式
- 行为型模式
(1)创建型模式
1.1 单例模式 —— 参考:Python设计模式——单例模式
1.2工厂模式—— 参考:Python设计模式——工厂方法模式(FactoryMethod)
1.3抽象工厂模式—— 参考:(4条消息) 一文详解“抽象工厂模式”以及python语言的实现_MIss-Y的博客-CSDN博客_python抽象工厂模式
1.4建造者模式—— 参考:Python设计模式——建造者模式
1.5 原型模式
(2)结构型模式
2.1. 外观模式—— 参考:Python设计模式——外观模式
2.2. 装饰器模式—— 参考:Python设计模式——装饰模式(Decorator)
2.3. 代理模式—— 参考:Python设计模式——代理模式(Proxy)
2.4. 控制器模式
2.5. 享元模式
2.6. 适配器模式
(3)行为型模式
3.1. 观察者模式—— 参考:Python设计模式——观察者模式
3.2. 命令模式
3.3. 解释器模式
3.4. 责任链模式
3.5. 状态(机)模式—— 参考:Python设计模式——状体模式
3.6. 策略模式
3.7. 模板模式—— 参考:Python设计模式——模版方法模式