python3 最简单的实现 模版设计模式
时间:2022-07-28
本文章向大家介绍python3 最简单的实现 模版设计模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。
例如实现某一窗体或者页面启动时,第一步需要加载启动界面图片资源,第二步加载个人信息,第三步加载个人钱包信息,第四步关闭或者隐藏上一个窗口(界面)。这个时候类可以写成如下方式:
class LoadNewWindows:
def load(self):
print('启动界面...')
self.loadImg()
self.loadUserInfo()
self.loadWalletInfo()
def loadImg(self):
print('记载图片...')
def loadUserInfo(self):
print('加载用户信息...')
def loadWalletInfo(self):
print('加载钱包信息...')
loadwin=LoadNewWindows()
loadwin.load()
以上类定义了一个load方法,调用内部方法实现流程。
运行如下:
这个时候如果需要加载其它窗口,实现流程与以上实现类似,只是多了一个加载信息,例如需要额外加载在线用户信息;再或者不需要加载钱包信息,这个时候就可以以以上的类作为一个基类,继承后再新增方法或者重新调用步骤即可:
class loadOtherWindows(LoadNewWindows):
def load(self):
print('启动新界面...')
self.loadImg()
self.loadUserInfo()
self.loadOtherUserInfo()
def loadOtherUserInfo(self):
print('加载其它用户信息...')
以上方法为 LoadNewWindows 子类,并且有一个新的方法 loadOtherUserInfo,用于加载其它用户信息,其它流程与父类相似,只是少了加载钱包,因为在这里,我们设定的窗口是不需要加载钱包信息。在load中实现了流程的调用。最后调用两个类:
loadwin=LoadNewWindows()
loadwin.load()
print('n--------------分界线------------n')
loadOtherWin=loadOtherWindows()
loadOtherWin.load()
结果如下:
模板方法减少了代码冗余,降低了耦合,但是在可读性上有一定影响,但是开发时有文档的说明,却是问题不大。 完整代码如下:
class LoadNewWindows:
def load(self):
print('启动界面...')
self.loadImg()
self.loadUserInfo()
self.loadWalletInfo()
def loadImg(self):
print('记载图片...')
def loadUserInfo(self):
print('加载用户信息...')
def loadWalletInfo(self):
print('加载钱包信息...')
class loadOtherWindows(LoadNewWindows):
def load(self):
print('启动新界面...')
self.loadImg()
self.loadUserInfo()
self.loadOtherUserInfo()
def loadOtherUserInfo(self):
print('加载其它用户信息...')
loadwin=LoadNewWindows()
loadwin.load()
print('n--------------分界线------------n')
loadOtherWin=loadOtherWindows()
loadOtherWin.load()
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring Boot 2.x基础教程:使用EhCache缓存集群
- 白平衡初探
- Activity的启动过程详解(基于10.0源码)
- Activity生命周期-你真的了解吗?
- Activity启动模式
- Redis6.0主从、哨兵、集群搭建和原理
- Linux入门学习笔记二
- 聊聊dubbo-go的tracingFilter
- 轻松学Pytorch –使用torchvision实现对象检测
- Linux core dump有什么用?
- Linux系统搭建C++开发环境
- Spring入门
- TKE容器实现限制用户在多个namespace上的访问权限(上)
- TKE容器实现限制用户在多个namespace上的访问权限(下)
- 小程序Android可以请求,ios请求失败wx.request