博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何提高代码复用性,定义骨架?
阅读量:6677 次
发布时间:2019-06-25

本文共 985 字,大约阅读时间需要 3 分钟。

模板方法模式

1、内容 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

2、角色 抽象类:定义抽象的原子操作(钩子操作);实现一个模板方法的骨架 具体类:实现原子操作

3、适用场景 一次性实现一个算法的不变的部分 各个子类中的公共行为应该被提取出来并集中到一个公共父类中以避免代码重复 控制子类扩展

4、优点 提高代码复用性 将相同部分的代码放在抽象的父类中 提高了拓展性 将不同的代码放入不同的子类中,通过对子类的扩展增加新的行为 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的扩展增加新的行为,实现了反向控制 & 符合“开闭原则”

5、缺点 引入了抽象类,每一个不同的实现都需要一个子类来实现,导致类的个数增加,从而增加了系统实现的复杂度。

6、示例代码

from abc import ABCMeta, abstractmethodclass IOHandler(metaclass=ABCMeta):   @abstractmethod   def open(self, name):       pass   @abstractmethod   def deal(self, change):       pass   @abstractmethod   def close(self):       pass   def process(self, name, change):       '''模板,就相当于是一个空盒子,可以往里面添加自己需要的功能。让这个函数去执行'''       self.open(name)       self.deal(change)       self.close()class FileHandler(IOHandler):   def open(self, name):       print('打开文件')   def deal(self, change):       print('操作文件')   def close(self):       print('关闭文件')obj = FileHandler()obj.process('abc.txt','')复制代码

识别图中二维码,领取python全套视频资料

转载地址:http://kagxo.baihongyu.com/

你可能感兴趣的文章
js中数组连接concat()
查看>>
HDU 2159 FATE
查看>>
docker-compose 意见搭建Samba文件共享服务
查看>>
Keepalived+Nginx搭建主从高可用并带nginx检测
查看>>
VMware 中如何打开U盘弹出U盘或者移动硬盘的(两种方法)
查看>>
8.10模拟赛
查看>>
走进c++0x,体验不一样的c++
查看>>
tomcat启动报错
查看>>
【转】Centos yum 换源
查看>>
标准字符串函数及 字符串类--数据结构
查看>>
Hibernate内测总结
查看>>
matplotlib.pyplot如何绘制多张子图
查看>>
excel 常用设置
查看>>
[自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
查看>>
js !!条件判断或运算的作用
查看>>
记一次安装Nginx+php-fpm安装后无法解析.php文件,状态码200,但显示空白页
查看>>
BFC
查看>>
C++中++i与i++
查看>>
P1233 木棍加工
查看>>
小程序售票生成二维码---借助云开发获取小程序用户openid
查看>>