2

以下代码(第 2 行)在类 uvm_resource_pool 定义中创建实例(对象)rp 的含义是什么?

class uvm_resource_pool;

  static local uvm_resource_pool rp = get();

  // Function: get
  //
  // Returns the singleton handle to the resource pool

  static function uvm_resource_pool get();
    if(rp == null)
      rp = new();
    return rp;
  endfunction
4

1 回答 1

4

这就是在 SystemVerilog 中对单例模式进行编码的方式。单例模式是一种 OOP 技术,可确保只构造一个类类型的实例。构造函数和对象rp都被声明为本地的。检索类类型对象实例的唯一方法uvm_resource_pool是调用静态方法get(),该方法在第一次调用时构造它,但下一次它只会返回rp。这也是解决静态类初始化顺序惨败的方法。您永远不会直接引用静态变量,您总是使用在第一次引用时构造它的 get() 方法。

于 2014-12-06T21:28:45.377 回答