网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

singletonclass是什么

这篇文章主要介绍“singleton class是什么”,在日常操作中,相信很多人在singleton class是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”singleton class是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司专注于商城网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供商城营销型网站建设,商城网站制作、商城网页设计、商城网站官网定制、成都微信小程序服务,打造商城网络公司原创品牌,更为您提供商城网站排名全网营销落地服务。

SystemVerilog中Singleton class是指只有一个对象(object)的类。这个对象只创建一次,为所需的全局变量提供一个namespaces。

Singleton class定义全局的行为,例如printing。

Singleton class 在compile-time创建一个对象,然后在run-time操作其中的成员,不需要用户在仿真时在建立一个新的实例。

program top;class singleton;       int unsigned var1;
  //  Need to declare it as static, as  it is accessed by static method 'create'      static  singleton single;
  //  Declared as 'protected', so  user can't directly create instance of this class      protected functionnew();      endfunction:new
 static functionsingleton  create();         if (single ==null) begin           $display("Object  single is null, so creating new object");           single =new();         end         return single;      endfunction:create    endclass:singleton      singleton s1,  s2;    initial begin         s1 = singleton ::create();         $display (" 1  : s1.var1 = %0d",  s1.var1);         s1.var1 =10;         $display (" 2  : s1.var1 = %0d",  s1.var1);
    s2 = singleton ::create();         $display (" 3  : s2.var1 = %0d",  s2.var1);
    s2.var1 =20;         $display (" 4  : s2.var1 = %0d",  s2.var1);         $display (" 5  : s1.var1 = %0d",  s1.var1);      end    endprogram

Output:    

//   1 : s1.var1 = 0    //   2 : s1.var1 = 10    //   3 : s2.var1 = 10    //   4 : s2.var1 = 20    //   5 : s1.var1 = 20

A singleton object is a globally accessiblestatic object providing customizable service methods.

Synopsys UVM1.2 Workshop  

在下面的例子中:

class service_class;           protected static service_class me =get();           static function service_class get();                      if(me = null) me = new() ;                       return me ;            endfunctionextern virtual function void error (string msg) ;endclass

error method需要用户自行定义所需要的行为。

在UVM的workshop中使用了一个名称为proxy_class的singleton class很好地诠释了其在factory机制的应用。 

class proxy_class#(type T =base) ;           type proxy_class#(T)  this_type ;  //just for coding convenience           protected function new();endfunction
static function this_type get();           if(me== null) me = new() ;           return me;endfunctionstatic function T create();           create=new() ;functionendcase

class driver xtends base;           typedef proxy_class(driver) proxy ;endclass
class monitor xtends base;           typedef proxy_class(monitor) proxy ;endclass

class environment ;           driver drv ;           monitor mon;           function new;           drv = driver::proxy::create() ;           mon = monitor::proxy::create() ;    endfunctionendclass

这个proxy class提供了一个创建不同的singleton bject的机制。

为了使proxy class更有意义,我们需要一个virtual base classfactory机制。proxy class根据不同的factory注册和base class生成特定的proxy object。

到此,关于“singleton class是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


新闻标题:singletonclass是什么
转载来源:http://bjjierui.cn/article/pssdhh.html

其他资讯