Tôi sử dụng lớp mẫu đơn trong coffeescript được hiển thị bên dưới gần đây. Nó hoạt động hoàn hảo nhưng tôi không biết tại sao điều này có thể là một mẫu đơn. Đây có thể là một câu hỏi ngu ngốc nhưng cảm ơn bạn đã trả lời.Lớp Singleton trong coffeescript
#coffeescript
class BaseClass
class Singleton
singleton = new Singleton()
BaseClass = -> singleton
a = new BaseClass()
a.name = "John"
console.log a.name # "John"
b = new BaseClass()
b.name = "Lisa"
console.log b.name # "Lisa"
console.log a.name # "Lisa"
và mã dưới đây là javascript được sản xuất bởi các mã trên
var BaseClass, a, b;
BaseClass = (function() {
var Singleton, singleton;
function BaseClass() {}
Singleton = (function() {
function Singleton() {}
return Singleton;
})();
singleton = new Singleton();
BaseClass = function() {
return singleton;
};
return BaseClass;
})();
a = new BaseClass();
a.name = "John";
console.log(a.name);
b = new BaseClass();
b.name = "Lisa";
console.log(b.name);
console.log(a.name);
EDITED: Tôi không yêu cầu định nghĩa của 'Singleton pattern' cũng không làm thế nào họ thường được tạo ra nhưng lý do tại sao mã ở trên luôn trả về cùng một cá thể thay vì tạo một mã mới.
Bạn có thể xem xét việc chạy mã này trong trình gỡ lỗi, để xem 'lý do' hoặc 'cách' mã này thực hiện những gì nó làm. –