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

湖南企业网站制作公司怎样批量做地级市网站

湖南企业网站制作公司,怎样批量做地级市网站,织梦网站调用工具,大气精美网站设计工作室织梦模板一、模板方法 模板方法(Template Method)设计模式是一种行为设计模式, 它在父类中定义了一个功能的框架, 允许子类在不修改结构的情况下重写功能的特定步骤。也就是模板方法定义了一组有序执行的操作,将一些步骤的实现留给子类,同…

一、模板方法

模板方法(Template Method)设计模式是一种行为设计模式, 它在父类中定义了一个功能的框架, 允许子类在不修改结构的情况下重写功能的特定步骤。也就是模板方法定义了一组有序执行的操作,将一些步骤的实现留给子类,同时保持整体功能结构。该技术通常也用于为主要操作提供预处理和后处理的钩子(hook)。

UVM库用了很多模板方法,比如uvm_sequence里的pre_body()和post_body()就是body()方法的钩子,在分别允许用户在body()执行之前和之后做一些其它处理。

模板方法设计模式主要包括以下几个组件:

  • 抽象类 (Abstract­Class):会声明完成一个功能所需各个步骤的方法, 以及依次调用它们实际步骤。 功能步骤可以被声明为抽象类型, 也可以提供一些默认实现。另外也可以提供一些放在主要功能步骤之前或之后的可选步骤方法(钩子),这些方法为子类提供额外的功能扩展点。
  • 具体类 (Concrete­Class):可以重写所有步骤实现, 但不能重写模板方法自身执行各个步骤方法的顺序。

我们以UVM中的monitor来举个模板方法应用的例子,利用模板方法可以扩展monitor主要功能,而且不容易误破坏monitor主功能。在base monitor组件中定义了非virtual的collect_transactions()模板方法,并提供了空的pre_collect()和post_ collect ()钩子方法。在继承的子monitor中,通过实现pre_ collect ()和post_ collect ()的具体内容,来提供了特定项目需求的操作。然后使用UVM factory方法将子monitor的对象去替换base monitor的对象。

下图为模板方法设计模式在monitor中应用的UML类图。

二、参考代码

monitor的模板方法设计模式参考代码如下:

class base_monitor extends uvm_monitor;`uvm_component_utils (base_monitor)function new(string name = " base_monitor ", uvm_component parent=null);super.new(name, parent);endfunction : newtask collect_transactions();pre_collect();collect();post_collect();endtask : collect_transactionsvirtual task pre_collect();`uvm_info("PRE_COLLECT", "EMPTY method", UVM_LOW)endtask : pre_collecttask collect();`uvm_info("COLLECT", "collect begin", UVM_LOW)`uvm_info("COLLECT", "collect end", UVM_LOW)endtask : collectvirtual task post_collect();`uvm_info("POST_COLLECT", "EMPTY method", UVM_LOW)endtask : post_collectendclass : base_monitor

模板方法设计模式-具有空钩子的base monitor

class son_monitor extends base_monitor;`uvm_component_utils (son_monitor)function new(string name = " son_monitor ", uvm_component parent=null);super.new(name, parent);endfunction : newvirtual task pre_collect();`uvm_info("PRE_COLLECT", "PRE: collect item", UVM_LOW)endtask : pre_collectvirtual task post_collect();`uvm_info("POST_COLLECT", "POST: collect item", UVM_LOW)endtask : post_collectendclass : son_monitor

模板方法设计模式-带有实现钩子的son monitor

模拟测试代码如下:

// Use UVM factory overrde in the uvm_env
set_type_override_by_type(base_monitor::get_type(), son_monitor::get_type(), 'b0);

输出仿真日志如下:

 | # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [PRE_COLLECT] EMPTY method| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [COLLECT] collect begin| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [COLLECT] collect end| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [POST_COLLECT] EMPTY method

模板方法设计模式-带有空钩子的base monitor的输出结果

 | # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [PRE_COLLECT] PRE: collect item| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [COLLECT] collect begin| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [COLLECT] collect end| # UVM_INFO  @ 0.000ns: uvm_test_top.env.agent.mon_h [POST_COLLECT] POST: collect item

模板方法设计模式-带有实现钩子的子monitor的输出结果

输出仿真文件显示了模板方法模式的效果。在前者中,消息由具有空pre_collect()和post_collect()钩子的base monitor生成。在后一种情况下,将使用子monitor的实例,并使用已实现的钩子,这些钩子可用于特定于项目的处理,且无需修改base monitor的代码。子monitor主要的collect()方法继承自base monitor,因此两种情况下保持一致。模板方法collect_transactions()确保钩子会在主函数collect()之前和之后合适的地方被调用了。

模板方法的通常使用方式就是定义一个基本的抽象类,并且指定哪些抽象方法需要再子类中实现。模板方法的主要缺点就是,如果父类和子类都实现了复杂的功能,调试起来将非常麻烦。

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

相关文章:

  • 企业网站如何建设和推广山东网站建设模板制作
  • 沈阳做网站找黑酷科技携程网网站做的怎么样
  • 做百科需要发哪些网站wordpress版本回退
  • 视频网站开发的论文中国设计联盟官网
  • 长沙网站设计哪里好爱主题wordpress
  • 赣州网站建设设计做相亲网站的安全责任
  • 苏州网站建设中心点击图片跳转到网站怎么做链接
  • 威海做网站的wordpress postpass
  • 山西cms建站系统价格工程装饰网
  • 万网提供的网站建设服务的具体项目张家口网站建设费用
  • 《关于加快网站群建设的通知》合肥seo快排扣费
  • 云服务器建设网站怎么修改wordpress
  • 商城网站建设新闻企查查个人信息查询
  • 常熟网站建设专业的公司国外设计教程网站
  • 哪有网站给光头强做面黄骅港海边景点
  • 网站建设的特色网站上传的图片怎么做的清晰度
  • 西安新能源网站建设公司seo排名优化
  • 做网站在国外发图片安徽省教育局网站建设方案
  • 学校英语网站栏目名称文库网站建设
  • 沧州企业网站制作小程序商城免费
  • 网站不备案能解析吗足球比赛直播间在线观看
  • 网站前期基础建设 怎么写邯郸信息港二手物品出售
  • 注册的空间网站担路网提供网站建设
  • 仙桃网站建设网站开发实战 王
  • 一站建设个人网站最简单的网站开发国际化
  • 建设网站还要云服务器吗肥城住房和城乡建设局网站
  • 网站建设上传服务器步骤网站建设套餐128000
  • 开发电商网站品牌建设制度
  • 视频网站调用武功网站开发
  • 网站首页建设网海南建设银行官方网站