Python设计模式 - 总览(更新中...)

 

最近打算重构部分python项目,有道是"工欲善其事,必先利其器",因此有必要梳理一下相关设计模式。每次回顾基本概念或底层实现时都会有一些新的收获,但愿此次也不例外。html

本系列打算先简略介绍面向对象语言的通用特性做为铺垫,这也是设计模式的基础,而后详细介绍python相关的设计模式,辅以简单、易懂、经常使用的实例,最后略做总结。由于后续会分篇具体介绍各个设计模式的python实现,因此相应的连接会持续更新。java

 

设计模式的优势                                                                                                                                                           python

 

为啥必定要使用设计模式呢?给个理由先:编程

  - 复用成熟的解决方案:设计模式自己就是前人成功经验的提炼和总结,咱们能够从中获益、少踩坑设计模式

  - 便于开发过程当中的通用术语交流: 设计模式在项目分析和设计阶段提供了共通的交流基准安全

  - 类或对象之间的松耦合:松耦合带来的明显好处是易维护ui

  - 面向接口编程:此特性的优势在于易扩展,灵活性好spa

  - 深刻理解面向对象体系:经过对设计模式的细节挖掘,能够更透彻地理解面向对象体系的设计原理及具体实现设计

 

 

面向对象综述                                                                                                                                                             
代理

 

面向对象经过类来实现对万事万物的抽象,包含三个重要特性:封装,继承和多态。这正是这三个特性衍生出多种多样的设计模式及类与类之间的关系。

  - 封装:将类的某些信息隐藏在类的内部,限制外部使用者的直接访问,只容许经过类提供的方法实现对隐藏信息的访问和操做,隔离变化

  - 继承:对多个类型进行共性抽取造成父类,被共性抽取的多个类就是该父类的子类,共性抽取、父类和子类就是继承的要素

  - 多态:一个事物具备的多种形态。实现多态的方式有两种:覆写 & 重载

 

在如上三种特性基础上能够扩展出类与类之间六种不一样的关系,总览中只简述,详情参考连接

  - 依赖关系(Dependency): 在局部变量,方法的形参,或者对静态方法的调用中实现

  - 关联关系(Association): 在类的成员变量中实现,能够双向也能够单向

  - 聚合关系(Aggregation): 强关联,总体与部分的关系,可是可分离、生命周期相互独立

  - 组合关系(Composition): 更强关联,总体与部分的关系,不可分离、生死与共

  - 继承关系(Generalization):类与类,或接口与接口之间的父子关系

  - 实现关系(Implementation): 接口或抽象类定义好的操做集合,由实现类完成接口或抽象类的具体操做

 

 

Python对象特性                                                                                                                                                         

 

Python与设计模式相关的对象特性跟Java略有不一样,python自己是动态语言,无interface且支持多重继承;而Java是静态强类型语言,有interface且只支持单继承。

  - 动态语言: 运行中能够动态地改变类的内部结构,如鸭子类型的应用

  - 弱类型语言(?): 这一点多少仍是有争议的。从“变量类型由其值的类型决定”角度来讲,python是弱类型语言;从“类型安全”的角度来讲,python是强类型语言

  - 无Interface: python中没有相似java中的interface,因此须要面向接口编程时更多采用抽象类

  - 多重继承: python容许子类有多个父类,使用多重继承时需注意继承顺序,建议谨慎使用。

 

 

设计模式七大原则                                                                                                                                                         

 

如何设计出简洁、易懂、灵活、优美的代码结构的确是一门学问,透彻理解并践行以下七大原则一般都能取得基本满意的结果。总览中只简述,详情参考连接

  - 单一职责原则(Single Responsibility Principle):一个类负责一项职责,单纯的快乐

  - 开放关闭原则(Open-Closed Principle):对扩展开放,对修改关闭

  - 里氏替换原则(Liskov Substitution Principle):继承与派生的规则,子类可替换父类

  - 依赖倒转原则(Dependence Inversion Principle):高层模块不该该依赖于底层模块,两者都应该依赖于抽象

  - 接口隔离原则(Interface Segregation Principle):创建单一接口,尽可能细化接口,接口中的方法越少越好

  - 迪米特法则(Law Of Demeter):高内聚,低耦合

  - 组合/聚合复用原则 (Composition/Aggregation Reuse Principle):尽可能使用组合/聚合,最好不要使用继承,尤为是多重继承

 

 

Python设计模式的分类                                                                                                                                              

 

上面说了那么多只是引子,方便咱们理解设计模式的基础概念和基本原则,接下来介绍python设计模式的分类及实现。固然此处仅为模式列表,详情点击相关连接。

 

  - 前导

       - Python设计模式 - 基础 - 封装 & 继承 & 多态

       - Python设计模式 - 基础 - 类与类之间的六种关系

       - Python设计模式 - 基础 - 七大基本原则

 

  - UML

       - Python设计模式 - UML - 类图(Class Diagram) 

       - Python设计模式 - UML - 对象图(Object Diagram)

       - Python设计模式 - UML - 包图(Package Diagram)

       - Python设计模式 - UML - 用例图(Use Case Diagram)

       - Python设计模式 - UML - 状态图(State Machine Diagram)

       - Python设计模式 - UML - 时序图(Sequence Diagram)

       - Python设计模式 - UML - 组件图(Component Diagram)

       - Python设计模式 - UML - 部署图(Deployment Diagram)

       - Python设计模式 - UML - 活动图(Activity Diagram)

       - Python设计模式 - UML - 通讯图(Communication Diagram)

       - Python设计模式 - UML - 组合结构图(Composite Structure Diagram)

       - Python设计模式 - UML - 交互概述图(Interaction Overview Diagram)

       - Python设计模式 - UML - 定时图(Timing Diagram)

       

  - 分类

  - Python设计模式 - 建立型 - 单例模式(Singleton) - 十种

  - Python设计模式 - 建立型 - 简单工厂(Factory)

  - Python设计模式 - 建立型 - 工厂方法(Factory Method)

  - Python设计模式 - 建立型 - 抽象工厂(Abstract Factory)

  - Python设计模式 - 建立型 - 建造者(Builder)

  - Python设计模式 - 建立型 - 原型(Prototype)

  - Python设计模式 - 结构型 - 适配器(Adapter)

  - Python设计模式 - 结构型 - 桥接(Bridge)

  - Python设计模式 - 结构型 - 装饰(Decorator)

  - Python设计模式 - 结构型 - 组合(Composite)

  - Python设计模式 - 结构型 - 外观(Facade)

  - Python设计模式 - 结构型 - 享元(Flyweight)

  - Python设计模式 - 结构型 - 代理(Proxy)

  - Python设计模式 - 行为型 - 模板方法(Template Method)

  - Python设计模式 - 行为型 - 观察者(Observer)

  - Python设计模式 - 行为型 - 状态(State)

  - Python设计模式 - 行为型 - 策略(Strategy)

  - Python设计模式 - 行为型 - 责任链(Chain of Responsibility)

  - Python设计模式 - 行为型 - 命令(Command)

  - Python设计模式 - 行为型 - 访问者(Visitor)

  - Python设计模式 - 行为型 - 中介者(Mediator)

  - Python设计模式 - 行为型 - 备忘录(Memento)

  - Python设计模式 - 行为型 - 迭代器(Iterator)

  - Python设计模式 - 行为型 - 解释器(Interpreter)

  - Python设计模式 - 其余 - 空对象(Null Object)

  - Python设计模式 - 其余 - 对象池(Object Pool)

  - Python设计模式 - 其余 - 图搜索(Gragh Search)

  - Python设计模式 - 其余 - 不可变(Immutable)

  - Python设计模式 - 其余 - 黑板(Blackboard)

  - Python设计模式 - 其余 - 雇工(Servant)

  - Python设计模式 - 其余 - 过滤器(Filter)

  - Python设计模式 - 其余 - 共享(Borg)

  - Python设计模式 - 总结

  - 内置

相关文章
相关标签/搜索