আমি গেমস তৈরির জন্য কোকোস 2 ডি-এক্স গেম ইঞ্জিন ব্যবহার করি। ইঞ্জিন ইতিমধ্যে অনেক সিলেটলেট ব্যবহার করে। যদি কেউ এটি ব্যবহার করে তবে তাদের কিছুটির সাথে তাদের পরিচিত হওয়া উচিত:
Director
SimpleAudioEngine
SpriteFrameCache
TextureCache
EventDispatcher (was)
ArmatureDataManager
FileUtils
UserDefault
সামগ্রিক প্রায় 16 টি ক্লাস সহ আরও অনেক কিছু। আপনি এই পৃষ্ঠায় অনুরূপ তালিকাটি পেতে পারেন: কোকোস 2 ডি-এইচটিএমএল 5 ভি 3.0- তে সিঙ্গলটন অবজেক্টস তবে আমি যখন গেমটি লিখতে চাই তখন আমার আরও বেশি সিঙ্গলেট দরকার:
PlayerData (score, lives, ...)
PlayerProgress (passed levels, stars)
LevelData (parameters per levels and level packs)
SocialConnection (Facebook and Twitter login, share, friend list, ...)
GameData (you may obtain some data from server to configure the game)
IAP (for in purchases)
Ads (for showing ads)
Analytics (for collecting some analytics)
EntityComponentSystemManager (mananges entity creation and manipulation)
Box2dManager (manages the physics world)
.....
আমি কেন তাদের সিলেটলেট হওয়া উচিত বলে মনে করি? কারণ আমার গেমটিতে আমার খুব আলাদা জায়গায় তাদের প্রয়োজন হবে এবং ভাগ করে নেওয়া অ্যাক্সেসটি খুব সহজ হবে। অন্য কথায়, আমি এগুলি কোথাও তৈরি করব এবং আমার সমস্ত আর্কিটেকচারে পয়েন্টারগুলি পাস করব না কারণ এটি খুব কঠিন হবে। এছাড়াও এগুলি আমার কেবল একটির মতো জিনিস। যে কোনও ক্ষেত্রে আমার বেশ কয়েকটি প্রয়োজন, আমি মাল্টিটন প্যাটার্নটিও ব্যবহার করতে পারি। তবে সবচেয়ে খারাপ বিষয়টি হ'ল সিঙ্গলটন হ'ল কারণগুলির কারণে সবচেয়ে বেশি সমালোচিত প্যাটার্ন:
- bad testability
- no inheritance available
- no lifetime control
- no explicit dependency chain
- global access (the same as global variables, actually)
- ....
আপনি এখানে কিছু চিন্তাভাবনা খুঁজে পেতে পারেন: https://stackoverflow.com/questions/137975/ কি- is - so- bad - about- singletons এবং https://stackoverflow.com/questions/4074154/when-should-the-singleton -pattern নয়-করা ব্যবহৃত-ব্যতীত-সুস্পষ্ট
সুতরাং, আমি মনে করি, আমি কিছু ভুল করছি। আমি আমার কোড গন্ধ মনে করি । :) আমি কীভাবে আরও অভিজ্ঞ গেম ডেভেলপারগণ এই স্থাপত্য সমস্যাটি সমাধান করেন? আমি যাচাই করতে চাই, গেম ইঞ্জিনে ইতিমধ্যে রয়েছে এমন 30 টিরও বেশি সিঙ্গেলটন হিসাবে বিবেচনা করা সম্ভবত গেম বিকাশে এখনও স্বাভাবিক ।
আমি একটি সিঙ্গেলন-ফেকাড ব্যবহার করার চিন্তা করেছি যাতে আমার এই সমস্ত শ্রেণীর প্রয়োজন হবে তবে তাদের প্রতিটি ইতিমধ্যে সিঙ্গেলন হবে না। এটি প্রচুর সমস্যা দূর করবে, এবং আমার কাছে কেবল একটি সিঙ্গেলটন থাকবে যা নিজেই মুখোমুখি হবে। তবে এক্ষেত্রে আমার আর একটি ডিজাইনের সমস্যা হবে। মুখোমুখি একটি Oশ্বরের OBJECT হয়ে যাবে। আমি মনে করি এটি খুব গন্ধযুক্ত । সুতরাং আমি এই পরিস্থিতির জন্য একটি ভাল নকশা সমাধান খুঁজে পাচ্ছি না। আপনার পরামর্শ দিন.