নং যখন নোড এর মডিউল ক্যাশে ব্যর্থ হয়, যে Singleton প্যাটার্ন ব্যর্থ। আমি ওএসএক্সে অর্থবহভাবে চালনার জন্য উদাহরণটি সংশোধন করেছি:
var sg = require("./singleton.js");
var sg2 = require("./singleton.js");
sg.add(1, "test");
sg2.add(2, "test2");
console.log(sg.getSocketList(), sg2.getSocketList());
এটি লেখককে প্রত্যাশিত আউটপুট দেয়:
{ '1': 'test', '2': 'test2' } { '1': 'test', '2': 'test2' }
তবে একটি ক্ষুদ্রতর পরিবর্তন ক্যাচকে পরাস্ত করে। ওএসএক্স-এ, এটি করুন:
var sg = require("./singleton.js");
var sg2 = require("./SINGLETON.js");
sg.add(1, "test");
sg2.add(2, "test2");
console.log(sg.getSocketList(), sg2.getSocketList());
অথবা, লিনাক্সে:
% ln singleton.js singleton2.js
তারপরে sg2
প্রয়োজনীয় রেখাটি এতে পরিবর্তন করুন :
var sg2 = require("./singleton2.js");
এবং বাম , একক পরাজিত হয়েছে:
{ '1': 'test' } { '2': 'test2' }
আমি এটিকে ঘিরে ধরার কোনও গ্রহণযোগ্য উপায় জানি না। আপনি যদি সত্যই সিঙ্গলটনের মতো কিছু তৈরি করার প্রয়োজনীয়তা অনুভব করেন এবং বিশ্বব্যাপী নেমস্পেসকে দূষিত করার সাথে ঠিকঠাক (এবং এর ফলে তৈরি হতে পারে এমন অনেকগুলি সমস্যা), আপনি লেখকের লেখাগুলি getInstance()
এবং exports
লাইনগুলিতে এই পরিবর্তন করতে পারেন :
singleton.getInstance = function(){
if(global.singleton_instance === undefined)
global.singleton_instance = new singleton();
return global.singleton_instance;
}
module.exports = singleton.getInstance();
এটি বলেছিল, আমি কখনই এমন একটি প্রোডাকশন সিস্টেমে এমন পরিস্থিতি তৈরি করতে পারি নি যেখানে আমাকে এ জাতীয় কিছু করার দরকার ছিল। আমি জাভাস্ক্রিপ্টে একক প্যাটার্ন ব্যবহার করার প্রয়োজন অনুভব করি নি।