[英]How can I implement a singleton class in perl?
您可以使用Class :: Singleton模塊。
也可以使用my
或state
變量輕松實現“ 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.