当前位置: 首页 > news >正文

门户网站规划北京十大活动策划公司

门户网站规划,北京十大活动策划公司,怎么在后台设计网站,手机官方目录 策略模式 模板方法模式 策略模式 定义一个个算法,把它们封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有:抽象策略、具体策略和上下文。 from abc import abstractmethod, ABCMeta from datetim…

目录

策略模式

模板方法模式


策略模式

定义一个个算法,把它们封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有:抽象策略、具体策略和上下文。

from abc import abstractmethod, ABCMeta
from datetime import datetime# 抽象策略
class Strategy(metaclass=ABCMeta):@abstractmethoddef execute(self, data):pass# 具体策略
class FastStrategy(Strategy):def execute(self, data):print("使用较快的策略处理%s" % data)# 具体策略
class SlowStrategy(Strategy):def execute(self, data):print("使用较慢的策略处理%s" % data)# 上下文
class Context:def __init__(self, strategy, data):self.data = dataself.strategy = strategy# 可以定义用户不知道的东西self.date = datetime.now()def set_strategy(self, strategy):self.strategy = strategydef do_strategy(self):self.strategy.execute(self.data)data = "Hello!"
# 使用较快的策略处理
fast_strategy = FastStrategy()
context = Context(fast_strategy, data)
context.do_strategy()
# 使用较慢的策略处理
slow_strategy = SlowStrategy()
context = Context(slow_strategy, data)
context.do_strategy()
"""
使用较快的策略处理Hello!
使用较慢的策略处理Hello!
"""

优点:定义了一些列可重用的算法和行为;消除了一些条件语句;可以提供相同行为的不同实现;缺点:客户必须了解不同的策略。

模板方法模式

内容:定义一个操作中的算法骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。使用模板方法,需要用到两种角色,分别是抽象类和具体类。抽象类的作用是是定义抽象类(钩子操作),实现一个模板方法作为算法的骨架。具体类的作用实现原子操作。

from abc import ABCMeta, abstractmethod
from time import sleep# 抽象类
class Window(metaclass=ABCMeta):@abstractmethoddef start(self):  # 原子操作/钩子操作pass@abstractmethoddef repaint(self):  # 原子操作/钩子操作pass@abstractmethoddef stop(self):  # 原子操作/钩子操作passdef run(self):"""模板方法(具体方法),这个大逻辑就不需要自己写了:return:"""self.start()while True:try:self.repaint()sleep(1)except KeyboardInterrupt:breakself.stop()# 具体类
class MyWindow(Window):def __init__(self, msg):self.msg = msgdef start(self):print('窗口开始运行!')def stop(self):print('窗口停止运行!')def repaint(self):print(self.msg)MyWindow("Hello...").run()

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

http://www.yayakq.cn/news/23775/

相关文章:

  • 建设网站的网站首页自己做的网站如何实现下载文件
  • 电影点播网站开发费用做网站需要什么证明嘛
  • 凡科建站怎么删除网站建设网站定制开发特点
  • 软件网站是怎么做的陕西住房和城乡建设网站
  • html网站开发实战教程政务公开网站建设工作情况汇报
  • 网站换行代码百度网站推广咨询
  • 人工智能公司网站建设用dw做音乐网站系统的代码
  • 网站建设 实施计划百度seo优化价格
  • 蓝色网站欣赏个人做网站猛赚钱
  • 动易网站安装子目录中永康住房和城乡建设局网站
  • 如何使用好单库选品库做网站奇迹网站架设视频
  • 有没有专业做挂的网站花店网站建设毕设介绍
  • 游戏落地页网站建设怎么使用wordpress
  • 用html做网站搜索框公众号开发合同
  • html做网站需要服务器吗做H5哪个网站字体漂亮一些
  • 淘宝客推广怎样做网站书法网站模板下载
  • 中国风网站配色方案有哪些企业可以做招聘的网站有哪些
  • 做瞹瞹爱视频网站营销师资格证报名官网
  • 南开做网站网站开发都需要什么
  • 怎样为网站做外链页面设计是最后一步吗
  • 做家装的网站有哪些内容网站建设 鸿
  • vs做的网站如何使用app制作平台神医嫡女漫画
  • 免费空间 网站代码重构网站
  • 宜兴淘宝网站建设推荐手机网站建设
  • 男女做爰视频网站在线湖北省建设厅网站证件
  • 网站建设需求文案案例wordpress网站管理
  • 上海企业网站优化企业网站建设背景
  • 有用模板网在线制作免费网站wordpress页面链接
  • 长宁区网站建设设计深圳地铁建设集团网站
  • 个人网站效果图咋做甘肃省城乡建设厅网站