设计模式-概述
前言
一些开源的第三方库、框架中大量采用设计模式设计底层代码,使得框架的使用者,可以更加简单、舒服地调用底层代码进行高层代码的开发;
这就是设计模式的魅力所在;
软件开发流程大致分为以下3大流程
- 需求分析
- 程序分析和设计
- 程序开发
设计模式是程序员在设计程序阶段,重要的参考依据,可以帮我们设计出更加松耦合、易于扩展、易于高层代码调用的程序;
设计模式概念
设计模式是针对软件设计中普遍存在的(反复出现)的各种问题,所提出的解决方案。
每1个设计模式系统地命名、解释和评价了面向对象系统中1个重要的反复出现的设计。
面向对象
上文提到设计模式是针对面向对象程序提出的程序设计方案,所以回顾下面向对象知识。
面向对象的3大特性
面向对象的3大特性不是1个平级并列的关系而是1个循序递进的关系
封装:把属性(数据)、方法(函数)封装到1个类里面
继承:通过继承可以解决2个类直接复用代码的问题
多态:Python本身是1本多态的语言
面向对象的接口
概念
接口是若干抽象方法的集合
作用
规范、限制实现类的方法
对高层代码(Client)隐藏了类的内部实现
降低高层代码(Client)调用底层代码的复杂度(Client底层代码的调用者不需要关心底层代码是怎么实现的,达到目的即可)
面向对象设计原则
Solid原则是指面向对象5大原则的首字母拼成Solid单词;
单一职责(Single Responsibility Principle)
1个类负责1项职责
开放封闭原则(Open Close Principle)
1个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。
既软件扩展新功能时应尽量不修改原代码。
里氏替换原则(Liskov Substitution Principle)
所有引用父类的地方必须能透明地使用其子类对象;
即在调用1个类的方法时,这个方法的参数,可以是1个父类的对象,也可以是继承了这个父类的子类的对象;
这就需要子类在重写方法和父类的方法时,实现的行为应当和父类方法保持一致;
子类和父类方法的逻辑可以不一致,但是传入参数、返回的返回值一致;
接口隔离原则(Interface Segregation Principle)
依赖倒置原则(Dependency Inversion Principle)
参考