python3 最简单的实现 模版设计模式

举报
1_bit 发表于 2021/04/19 22:15:18 2021/04/19
【摘要】 在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。 例如实现某一窗体或者页面启动时,第一步需要加载启动界面图片资源,第二步加载个人信息,第三步加载个人钱包信息,第四步关闭或者隐藏上一个窗口(界面)。这个时候类可以写成如下方式: class LoadNewWindows: def load(self): print('启动界面...

在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。

例如实现某一窗体或者页面启动时,第一步需要加载启动界面图片资源,第二步加载个人信息,第三步加载个人钱包信息,第四步关闭或者隐藏上一个窗口(界面)。这个时候类可以写成如下方式:

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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

以上类定义了一个load方法,调用内部方法实现流程。

运行如下:
在这里插入图片描述
这个时候如果需要加载其它窗口,实现流程与以上实现类似,只是多了一个加载信息,例如需要额外加载在线用户信息;再或者不需要加载钱包信息,这个时候就可以以以上的类作为一个基类,继承后再新增方法或者重新调用步骤即可:

class loadOtherWindows(LoadNewWindows): def load(self): print('启动新界面...') self.loadImg() self.loadUserInfo() self.loadOtherUserInfo() def loadOtherUserInfo(self): print('加载其它用户信息...')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

以上方法为 LoadNewWindows 子类,并且有一个新的方法 loadOtherUserInfo,用于加载其它用户信息,其它流程与父类相似,只是少了加载钱包,因为在这里,我们设定的窗口是不需要加载钱包信息。在load中实现了流程的调用。最后调用两个类:

loadwin=LoadNewWindows()
loadwin.load()

print('\n--------------分界线------------\n')

loadOtherWin=loadOtherWindows()
loadOtherWin.load()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

结果如下:
在这里插入图片描述
模板方法减少了代码冗余,降低了耦合,但是在可读性上有一定影响,但是开发时有文档的说明,却是问题不大。
完整代码如下:

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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

文章来源: blog.csdn.net,作者:1_bit,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/A757291228/article/details/107145681

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。