代码之家  ›  专栏  ›  技术社区  ›  Robben_Ford_Fan_boy

什么是鬼魂设计模式?

  •  12
  • Robben_Ford_Fan_boy  · 技术社区  · 14 年前

    Ghost设计模式是什么?它是如何实现的?我只能在网上找到有关它的片段。

    4 回复  |  直到 14 年前
        1
  •  22
  •   George Stocker NotMe    14 年前

    我所听过的关于设计模式和“幽灵”的唯一参考是 Lazy-Loading

    由于延迟加载只涉及在实际需要时加载对象,因此在此之前您可以将其视为“幽灵”。你可以看到它的轮廓,但不能真正使用它,直到它加载。

        2
  •  5
  •   Bill Hails    12 年前

    ghost在PoEAA,pp 202,206-14中提到过。ghost是一个延迟加载的对象,它包含的信息刚好足够按需实例化它自己。它们可能很有用,因为如果它们向加载程序注册自己,它们可以在第一次访问时触发类似重影的大量加载(如果Fowler提到这个位,则不知道)。

        3
  •  4
  •   Marcote    14 年前

        4
  •  0
  •   Community clintgh    7 年前

    事实上,我刚刚创造了一个,然后意识到这是一个鬼模式后,问 a question here in SO . 按照原始PHP代码的链接,这里有一个伪代码版本:

    // A "cheap" class
    class Namespace_Original
      {
      // The expensive, uninitialised object
      private Original
    
      // The "cheap" data needed to initialize Original
      private Data
    
      // Constructor for the cheap class
      public Namespace_Original(Data)
        {
        this.Data = Data
        }
    
      // Whenever you call a method of Original
      public __call(method_name, method_data)
        {
        // Create the expensive object only the first time it's going to be used
        if (empty(this.Original))
          this.Original = new Original(this.Data);
    
        // Call the Original's method with it's arguments
        this.Original.name( method_data );
        }
      }
    

    当你初始化这个的时候 便宜的 类中没有创建任何内容。当您实际调用一个方法时,就会创建“原始”对象(如果没有),并从中检索数据。它使你不能初始化 如果你不打算使用它,前提是这是一个昂贵的操作。