一、面向对象的六大设计原则
1、指导思想
- 可维护性 Maintainablity
修改功能,需要改动的地方越少,可维护性越好 - 可复用性 Reusability
代码可被重复使用
写出自己总结的类库 - 可扩展性 Extensibility/Scalability
添加功能,无需修改原来代码 - 灵活性 Flexibility/mobility/adaptability
代码接口可以灵活调用
2、设计原则
- 单一职责原则(Single Responsibility Principle)
一个类,负责单一的职责
高内聚,低耦合 - 开闭原则(Open-close Principle)
对扩展开放,对修改关闭:尽量在不修改原来代码的情况下扩展
抽象化和多态是开闭原则的关键 - 里氏替换原则(Liscov Substitution Principle)
所有使用父类的地方,必须能够透明的使用子类对象 - 依赖倒置原则(Dependency Inversion Principle)
依赖对象,不依赖具体
面向抽象编程 - 接口隔离原则(Interface Segregation Principle)
每一个接口应该承担自己独立的角色,不干不该自己干的事
避免子类实现不需实现的方法
需要对客户提供接口时,暴露最小的接口 - 迪米特原则(Law of Demeter)
尽量不要和陌生人说话
一个对象应该对其他对象有最小的了解
在迪米特法则中,对于一个对象,非陌生人包括以下几类:
1. 当前对象本身(this)
2. 以参数形式传入到当前对象方法中的对象
3. 当前对象的成员对象
4. 成员对象是集合,则集合中的所有元素都是朋友
5. 当前对象所创建的对象
3、总结
- OCP:总纲,对扩展开放,对修改关闭
- SRP:类的职责要单一
- LSP:子类可以透明替换父类
- DIP:面向接口编程
- ISP:接口的职责要单一
- LOD:降低耦合
二、设计模式
1、分类
2、UML类图
2.1 创建型模式
Abstract Factory
Builder
Factory Method
Prototype
继承标记接口Cloneable。
深拷贝和浅拷贝详见:https://blog.csdn.net/weixin_41832813/article/details/118090534
Singleton
单例,使用枚举实现单例
2.2 结构型模式
Adapter
Bridge
Composite
Decorator
Facade
【GOF】的书中指出:在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。当然这并不意味着在整个系统里只能有一个门面类,而仅仅是说对每一个子系统只有一个门面类。
个人理解:对外统一暴露的接口。
Flyweight
Proxy
详见:https://blog.csdn.net/weixin_41832813/article/details/118310499
2.3 行为型模式
ChainOfResponsibility
Command
Interpreter
每一条文法规则都可以表示为一个类,因此可以方便地实现一个简单的语言。
Iterator
Mediator
Memento
Observer
State
Strategy
Comparator接口是比较器接口(策略模式)
Template Method
Visitor
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。