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

做餐饮网站的目的与意义网图搜索识别

做餐饮网站的目的与意义,网图搜索识别,做外贸一般用什么网站,苏州互联网公司排行榜一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…

一、装饰器模式

装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻性。

对于经常需要在最后时刻新增特性的验证工作,装饰器模式的这个特性非常强大。该模式适用于通过向复杂数据项应用额外的约束集来对它们进行建模,或者在原先数据上添加额外数据。与类继承相比,它的主要优点是可以实现向类对象中动态添加或删减行为。在工程中,该技术被广泛用于实现受约束随机激励的生成。

举个例子,如下图,我们在验证环境中打算开发一个Arm指令生成器,原先RTL只支持基本的load和store指令,过段时间可能又支持atomic指令,再过段时间可能又支持SVE指令了,这样就容易造成我们需要对以往的代码不停地修改。更令人崩溃的是,RTL又搞了其它版本,有的版本只支持load/store指令和SVE指令,有的版本只支持atomic和SVE指令,等等。对于这些行为,第一个跳入脑海的想法可能就是扩展它所属的类,在新的类中添加新功能,但这种方式会使代码量迅速膨胀,而且可能会破坏之前写好的代码。

针对以上情况,我们可以考虑使用装饰器模式。要构建装饰器设计模式,需要定义几个主要部分:

  • 被包装对象:它声明了被包装对象的共用接口和基本行为,装饰器会在此基础上添加新的行为。
  • 抽象装饰器:定义了基本的装饰器,它拥有一个指向被被包装对象的引用成员变量,因此会将操作委派给被包装的对象。
  • 具体装饰器:定义了可动态增减到被包装对象的额外行为。具体装饰器会重写装饰基类的方法,并在调用父类方法之前或之后进行额外的行为。

下图使用UML类图提供了上述三者之间的图形化关系:

装饰器设计模式背后的主要思想是,各种具体装饰器可以在仿真过程中处于活动状态,灵活地为被包装对象增加新功能。而且可以指令任意组合的具体装饰器同时处于活动状态,这样就可以在任意给定时刻,向被包装的对象添加任何期望的激励组合。

二、参考代码

指令生成器的装饰器模式参考代码如下:

class common_base;int pe;int scen_weight[string];int weight_mul = 1;virtual function void set_scen_weight(common_base _h);endfunction : set_scen_weightvirtual function void print_msg();foreach ( scen_weight[t_scen] ) begin$display("scen[%s]=%0d is added", t_scen, scen_weight[t_scen]);endendfunction : print_msgendclass : common_baseclass base_decorator extends common_base;common_base  base;virtual function void set_scen_weight(common_base _h);add();base = _h;foreach ( scen_weight[t_scen] ) beginif ( base.scen_weight.exists(t_scen) ) begin`uvm_error("decorator", $psprintf("The scen(%s) has exists", t_scen))end else beginbase.scen_weight[t_scen] = scen_weight[t_scen] * weight_mul;endendprint_msg();endfunction : set_scen_weightvirtual function void add();endfunction : addendclass : base_decoratorclass base_ldst_scen_wei extends base_decorator;virtual function void add();scen_weight["load"]  = 10;scen_weight["store"] = 10;endfunction : addendclass : base_ldst_scen_weiclass atomic_scen_wei extends base_decorator;virtual function void add();scen_weight["atomic_add"] = 5;scen_weight["atomic_sub"] = 5;endfunction : addendclass : atomic_scen_weiclass sve_scen_wei extends base_decorator;virtual function void add();scen_weight["gather"]  = 8;scen_weight["scatter"] = 8;endfunction : addendclass : sve_scen_wei

模拟测试代码如下:

class scen_weight_gen;rand bit base_ldst_scen;rand bit atomic_scen;rand bit sve_scen;function void gen();common_base base = new();common_base common;`uvm_info("", $psprintf("base_ldst_scen:%b, atomic_scen:%b, sve_scen:%b", base_ldst_scen, atomic_scen, sve_scen), UVM_LOW)if ( base_ldst_scen ) begincommon = base_ldst_scen_wei::new();common.set_scen_weight(base);endif ( atomic_scen ) begincommon = atomic_scen_wei::new();common.weight_mul = 3;common.set_scen_weight(base);endif ( sve_scen ) begincommon = sve_scen_wei::new();common.set_scen_weight(base);endendfunction : genendclass : scen_weight_gen

输出仿真日志如下:

base_ldst_scen:1, atomic_scen:1, sve_scen:0| # scen[load]=10 is added| # scen[store]=10 is added| # scen[atomic_add]=5 is added| # scen[atomic_sub]=5 is added

从仿真结果可以看出,scen_weight_gen类随机后,base_ldst_scen为1,atomic_scen为1,sve_scen为0,因此只有load/store指令和atomic指令功能被添加到指令生成器中。

好了,今天就写到这里了。下次给大家分享下设计模式中策略模式(Strategy)在芯片验证中的应用。它和装饰器模式很类似,区别是装饰器模式可让你更改对象的外表,但策略模式则让你能够更改其本质。

http://www.hengruixuexiao.com/news/44605.html

相关文章:

  • 手机怎样制作个人网站营销策略有哪些有效手段
  • 电商网站建设与管理曲靖新闻今日头条
  • 工业核信息化部网站备案系统预防电信网络诈骗
  • 怎么用div做网站发外链的论坛
  • 精品网站做爆款爱站网站长seo综合查询
  • 建设网站域名的选择seo站
  • 做网站约需要多少钱全国疫情最新情况
  • 福州网站建设流程淄博seo怎么选择
  • 整形网站开发seo常规优化
  • 网站建设哪家公司好 电商 b2c搜索引擎优化的内部优化
  • 网站快照回档网络建站平台
  • 政府网站普查 怎么做网上营销新观察网
  • 六安seo合肥网站优化平台
  • 公司做网站好简述优化搜索引擎的方法
  • 企业怎么建立网站游戏优化大师官网
  • 铜陵网站建设企业官网seo
  • 高邮建设银行网站网站百度关键词seo排名优化
  • 王者荣耀是哪家公司开发的关键词优化计划
  • 桂电做网站的毕设容易过嘛全球疫情最新消息
  • 衡水做淘宝网站建设海洋网络推广效果
  • 沈阳世纪兴网站建设免费投放广告的平台
  • 日本做暧暧小视频网站惠州seo推广优化
  • 兼职做一篇微信的网站怎样制作网站
  • 网站建设流程服务东营网站建设费用
  • 射阳做企业网站多少钱发布新闻稿
  • 网站如何做搜狗搜索引擎新品上市怎么做宣传推广
  • 营销型网站建设设计6搜索引擎营销例子
  • 电商网站合作海淀搜索引擎优化seo
  • 网站建设税点优化排名seo
  • 大神自己做的下载音乐的网站泰安网站seo