python3 最简单的实现 模版设计模式
【摘要】 在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。
例如实现某一窗体或者页面启动时,第一步需要加载启动界面图片资源,第二步加载个人信息,第三步加载个人钱包信息,第四步关闭或者隐藏上一个窗口(界面)。这个时候类可以写成如下方式:
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)