簡體   English   中英

如何在Perl中實現單例類?

[英]How can I implement a singleton class in perl?

在Perl中實現Singletons的最佳實踐是什么?

您可以使用Class :: Singleton模塊。

也可以使用mystate變量輕松實現“ Singleton”類(后者自Perl 5.10起可用)。 但請參閱下面的@Michael評論。

package MySingletonClass;
use strict;
use warnings;
use feature 'state';

sub new {
    my ($class) = @_;
    state $instance;

    if (! defined $instance) {
        $instance = bless {}, $class;
    }
    return $instance;
}

如果您使用的是Moose,則可以使用MooseX :: Singleton 它的接口與Class :: Singleton兼容。

單例摘要:

  • 大多數情況下,正常對象會起作用。
  • 注意單例。
  • 盡可能本地化互動

雖然單例是一個不錯的主意,但我傾向於只實現一個普通對象並使用它。 如果只有一個這樣的對象很關鍵,那么我將修改構造函數以在創建第二個對象時引發致命異常。 除了添加依賴項之外,各種單例模塊似乎並沒有做什么用。

我這樣做是因為它很容易,有效,並且在某些古怪的將來需要在我的應用程序中使用第二個對象時,所做的更改已降至最低。

我還喜歡將與“單個”對象的交互本地化-將交互保持在盡可能少的地方。 因此,我不是通過每個對象直接訪問單例,而是通過“應用程序”對象來調解所有交互。 只要有可能,應用程序對象都會從“單例”中獲取數據,並將其作為參數傳遞給其他對象中的方法。 來自其他對象的響應也可能會被刪除並傳遞給“單例”。 當我需要對“單個”對象進行更改時,以及當我想在另一個不需要或能夠使用原始“單個”對象的應用程序中重用其他對象時,所有這些工作都會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM