python 设计模式 开篇 第1篇
1. 设计模式的定义
软件设计中普遍存在的 反复出现的 各种问题 所提出的解决方案
首先,什么是软件设计?
系统开发 项目开始的时候 需要做 需求分析 软件系统设计 软件建模 类的设计 接口的设计 等等。。。
设计模式解决的就是 软件设计 过程中出现的问题 这类问题 经常出现 反复遇到 因此 前人就总结 出了 应对这类问题的23种套路
感兴趣可以找一本书 《设计模式:可复用面向对象软件的基础》
2. 面向对象基础
设计模式 是 用于解决 软件建模过程中 设计类 设计接口 遇到的普遍问题,因此有必要复习一下 面向对象的知识
三大特性:
封装
将 方法,属性 封装到一个类 中,通过对象来访问或者调用 类或对象的属性以及方法,类 里面的方法 有 私有方法 公有方法,这个知识点 可以自行了解一下
继承
实现类与类之间的代码的复用, 猫,狗,都有吃,睡的方法,既可以抽象 成一个 宠物的类
多态
这个 就有点复杂 不好解释
3. 接口
接口 这个词 对于开发人员来讲 是每天都听到的词 对外暴露的 供调用者 调用的方法
定义:若干抽象方法的集合
4 python 实现接口定义的两种常用方式
4.1 通过 父类 中 抛出NotImplementedError 定义子类必须要实现的 方法 实现接口的定义
这样定义接口的话 如果不调用 接口 只是 实例化一个对象的话 不会报错的 因此 接口的定义还不是很严密
class Payment:
def pay(self, money):
raise NotImplementedError
class Alipay(Payment):
def pay(self, money):
print("Ali payed %d" % money)
class WechatPay:
def pay(self, money):
pass
if __name__ == '__main__':
p = Alipay()
p.pay(100)
4.2 通过 抽象类 实现接口的定义
from abc import ABCMeta, abstractmethod
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass
class Alipay(Payment):
def pay(self, money):
print("Alipay pay %d" % money)
class WechatPay(Payment):
def pay(self, money):
print("Wechat pay %d" % money)
if __name__ == '__main__':
p = Alipay()
p.pay(100)
python 设计模式 开篇 第1篇的更多相关文章
- Python设计模式 - 基础 - 封装 & 继承 & 多态
面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...
- Python设计模式 - 总览(更新中...)
最近打算重构部分python项目,有道是"工欲善其事,必先利其器",所以有必要梳理一下相关设计模式.每次回顾基本概念或底层实现时都会有一些新的收获,希望这次也不例外. 本系列打算先 ...
- Python 并发编程:PoolExecutor 篇
个人笔记,如有疏漏,还请指正. 使用多线程(threading)和多进程(multiprocessing)完成常规的并发需求,在启动的时候 start.join 等步骤不能省,复杂的需要还要用 1-2 ...
- 浅谈Python设计模式 - 外观模式
声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口 ...
- 浅谈Python设计模式 - 适配器模式
声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 从本篇便开始介绍结构型设计模式,而适配器设计模式便是该类设计模式的一种,那么什么 ...
- 浅谈Python设计模式 - 抽象工厂模式
声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ...
- 浅谈Python设计模式 - 原型模式
声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...
- 简介Python设计模式中的代理模式与模板方法模式编程
简介Python设计模式中的代理模式与模板方法模式编程 这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下 代理模式 Prox ...
- 实例解析Python设计模式编程之桥接模式的运用
实例解析Python设计模式编程之桥接模式的运用 这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #e ...
- python设计模式之修饰器模式
python设计模式之修饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. [ ] 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) [ ] 使用组合 ...
随机推荐
- 解决k8s删除pod后又重新创建了新的pod
1.问题现象 2.原因 在Kubernetes中,当你删除一个Pod时,如果该Pod是由Deployment.ReplicaSet或PodController创建的,那么这个Pod会被标记为" ...
- 【scikit-learn基础】--『预处理』之 缺失值处理
数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...
- Oracle-lsnrctl监听进程控制
LSNRCTL> help The following operations are available An asterisk (*) denotes a modifier or extend ...
- 【内核】基于 LSM 框架的 ELF 校验控制
欲实现操作系统对正在加载的 ELF 文件的校验控制,需要借助 LSM 框架. LSM 框架介绍 LSM 全称 Linux Security MOdule,是 Linux 的一个安全模块框架.LSM 为 ...
- Python——第四章:迭代器(Iterators)
迭代器iterator: 提到迭代器,最典型的就是for循环 for 变量 in 可迭代: pass 可迭代对象iterable: 是指可以使用 for 循环进行遍历的对象.除了字符串 (str).列 ...
- fstab 简介
简介 在一般的 Unix 或者 类Unix 中,为了更好地管理磁盘资源,有时不得不挂载一个外部的磁盘,使用 mount 命令可以快速地挂载一个外部磁盘,具体用法为: # 将磁盘分区 sda2 挂载在 ...
- 15、Flutter 按钮组件
按钮组件的属性 ButtonStylee里面的常用的参数 ElevatedButton ElevatedButton 即"凸起"按钮,它默认带有阴影和灰色背景.按下后,阴影会变大 ...
- ReactNative环境安装
一.Homebrew 采用 Homebrew 镜像源及工具,切换到国内. /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/Homebre ...
- bucket表:数仓存算分离中CU与DN解绑的关键
摘要:Bucket存储是数据共享中重要的一环,当前阶段,bucket存储可以将列存中的CU数据和DN节点解绑. 本文分享自华为云社区<存算分离之bucket表--[玩转PB级数仓GaussDB( ...
- 基于LiteOS Studio零成本学习LiteOS物联网操作系统
摘要:大家在学习物联网操作系统开发的时候,都不得不准备一套开发板和仿真器,也是一笔不小的投资.LiteOS社区现在对外开放了对Qemu模拟器的适配工程,在不使用开发板的情况下,也可以搭建LiteOS开 ...