前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3 最简单的实现 模版设计模式

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

原创
作者头像
1_bit
修改2020-07-06 10:48:34
1850
修改2020-07-06 10:48:34
举报
文章被收录于专栏:我的知识小屋我的知识小屋

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

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

代码语言:txt
复制
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方法,调用内部方法实现流程。

运行如下:

在这里插入图片描述
在这里插入图片描述

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

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

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

代码语言:txt
复制
loadwin=LoadNewWindows()
loadwin.load()

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

loadOtherWin=loadOtherWindows()
loadOtherWin.load()

结果如下:

在这里插入图片描述
在这里插入图片描述

模板方法减少了代码冗余,降低了耦合,但是在可读性上有一定影响,但是开发时有文档的说明,却是问题不大。

完整代码如下:

代码语言:txt
复制
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()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档