একাধিক উত্তরাধিকার সত্তা সিস্টেমগুলি করে এমন সমস্ত সমস্যার সমাধান করে না?


10

প্রশ্নটি নিজেকে বোঝানোর পক্ষে: একক উত্তরাধিকারের দ্বারা সত্তা সিস্টেমগুলি যে সমস্ত সমস্যার সমাধান করে তাও সমাধান করে না?

আমি কেবল "একাধিক উত্তরাধিকার" নামক একটি শব্দ মনে রেখেছিলাম এবং এটি ক্লাসিকাল উত্তরাধিকারের দ্বারা আরোপিত প্রচুর প্রসারণ সমস্যাগুলির সমাধান করতে পারে seems


1
একাধিক উত্তরাধিকার সত্তা সিস্টেমগুলির মতো, তবে এটি একই নয়। উদাহরণস্বরূপ, একাধিক উত্তরাধিকার সত্তার রান-টাইমে উপাদানগুলি যুক্ত এবং সরানো যাবে না। সমস্ত ভাষা একাধিক উত্তরাধিকারকে সমর্থন করে না। আপনি রচনাটি সত্তা / উপাদান বনাম একই বিভাগে বিবেচনা করতে পারেন।
মাইকেলহাউস

2
যদি আপনার ক্লাসগুলি ইতিমধ্যে এত ঝরঝরে থাকে যে আপনি আপনার পছন্দ মতো কোনওভাবেই নির্বিঘ্নে তাদের একসাথে উত্তরাধিকারী করতে পারেন তবে সেগুলি ইতিমধ্যে উপাদান হিসাবেও থাকতে পারে। উপাদানগুলি রানটাইমটিতে সংমিশ্রণ / একত্রিতকরণের অনুমতি দেয়

ভাল, এটি আরও জটিল এবং কম ত্রুটিযুক্ত প্রবণ, তাই কেন এটি পছন্দ করবেন?
এপিআই-বিস্ট

2
এমআই প্রকৃতপক্ষে "ব্লোট" ইস্যুগুলিকে সম্বোধন করে না, কারণ পিতামাত্ত শ্রেণি বা ক্লাসগুলির অতিরিক্ত সংখ্যক ইন্টারফেস উত্তরাধিকার সূত্রে প্রাপ্ত একক বনাম একাধিক উত্তরাধিকারের চেয়ে উত্তরাধিকার ব্যবস্থাকে খারাপভাবে ব্যবহার করার লক্ষণ। একই সমস্যাটি একই সাথে রচনা-ভিত্তিক দৃষ্টিভঙ্গিতে অর্জন করা যেতে পারে।

@ মিঃবাইস্ট বলতে কী বোঝাতে চাইছেন আরও জটিল / বেশি ত্রুটিযুক্ত প্রবণ, কম জটিল / ত্রুটিযুক্ত প্রবণ, বা "এটিকে কেন পছন্দ করবেন না?"
থ্রিডিভ

উত্তর:


10

না, একাধিক উত্তরাধিকার সত্তা সিস্টেমগুলি যে একই সমস্যাগুলি সমাধান করে না: সত্তা সিস্টেম এবং একাধিক উত্তরাধিকার দুটি খুব আলাদা জিনিস। আপনি একাধিক উত্তরাধিকার সহ বা ছাড়াই একটি সত্তা সিস্টেম তৈরি করতে পারেন এবং একইভাবে আপনি কোনও সত্ত্বা সিস্টেম তৈরি না করে একাধিক উত্তরাধিকার কাজে লাগাতে পারেন।

Ditionতিহ্যগতভাবে, কম্পোনেন্ট-ফোকাসড সত্তা সিস্টেমগুলি কোনও আকারে ভারী উত্তরাধিকার থেকে দূরে সরে যাওয়ার ইচ্ছার কারণে তৈরি করা হয়েছে, রচনার পরিবর্তে লক্ষ্য রেখে । এই প্রবন্ধে অন্য কোথাও পর্যাপ্ত সাহিত্য এবং আলোচনা রয়েছে, উদাহরণস্বরূপ প্রোগ্রামার এসই বা এসওতে , এবং কেন এটি রচনাকে প্রাধান্য দেওয়া যায় তা বৃহত্তর প্রশ্নটি গেম বিকাশের জন্য এক প্রকার অফ-টপিক। সংক্ষেপে, তবে, এটি এমন একটি পদ্ধতির যা নিজেকে উন্নত পরিবর্তন এবং রক্ষণাবেক্ষণের জন্য leণ দেয়।


2

জোশের উত্তরটি দুর্দান্ত, তবে আমি যুক্ত করতে চাই:

সত্তা / উপাদানগুলির একটি দুর্দান্ত বৈশিষ্ট্য হ'ল ডেটা-চালিত উপায় যা আপনার গেমের প্রতিটি "জিনিস" তৈরি এবং পরিচালনা করে। আমি যা দেখেছি তা থেকে একবার আপনার কাছে উপাদানগুলির ধরণের এবং সিস্টেমগুলির একটি দুর্দান্ত গ্রন্থাগার তৈরি হয়ে গেলে আপনি ন্যূনতম কোড পরিবর্তন করে প্রায় কোনও কিছু তৈরি করতে পারেন। (দ্রষ্টব্য: সর্বনিম্ন! = 0 )

আপনার গেমটিকে আচরণের দিক দিয়ে সংজ্ঞায়িত করে এবং ফ্লাইটে - চালনার সময়, কোনও স্ক্রিপ্ট বা ডাটাবেস ইত্যাদি লোড করে সূচনা করার সময় - নিজেকে ফ্লাইতে এই আচরণগুলি সংশোধন করার ক্ষমতা দিয়ে - আপনি নতুন সম্ভাবনার একটি সম্পূর্ণ বিশ্ব উন্মুক্ত করেন। আপনার ছায়াগুলি যেখানে আশা করবেন সেখানে অবতরণ হচ্ছে না তা দেখতে চান? আপনার আলোতে একটি ক্যামেরা / পিওভি উপাদান যুক্ত করুন।

সত্তা / উপাদান আপনাকে যতক্ষণ না আপনি ব্লক তৈরি করেছেন ততক্ষণ আপনি যা কিছু চান তা তৈরি করতে দেয়।

এছাড়াও, একাধিক উত্তরাধিকার একক উত্তরাধিকার হিসাবে একই সমস্যা সৃষ্টি করে। আপনি যখন স্তরক্রমের কোনও বৈশিষ্ট্য বা আচরণ যুক্ত করেন, এটি প্রচার করে। যতক্ষণ আপনি গভীর স্তরবিন্যাস করছেন, আপনি এমন পরিস্থিতিতে চলে যাবেন যেখানে আপনি অপ্রয়োজনীয় ওজন বহন করছেন, নকল কোড বা দ্বন্দ্বের সমাধান করছেন। আপনি যখন আপনার গেমটিকে ডেটা হিসাবে কল্পনা করেন তখন এর বেশিরভাগ এড়ানো যায়।

আমি গত কয়েক সপ্তাহে এটি নিয়ে খেলতে শুরু করেছি, তবে কীভাবে সহজ জিনিস হয়ে গেছে তা দেখে আমি মুগ্ধ হয়েছি। এটি কোনও রূপালী বুলেট নয় - আমি কয়েকটি ক্ষেত্রে জুড়ে চলেছি যেখানে একটি ল্যাম্বডা সংশ্লেষের সাথে সংযুক্ত হওয়া কোনও সমস্যা সমাধানের সবচেয়ে পরিষ্কার এবং সুপরিচিত উপায় ছিল - তবে এটি যদি আপনি কল করতে পারেন তবে এটি একটি দুর্দান্ত প্যাটার্ন।

কিছুটা সম্পর্কিত নোটের উপরে: ডেটা-কেন্দ্রিক অ্যাপ্লিকেশনগুলিতে (ওয়েবসাইট ইত্যাদিতে) এক অন্যতম বড়, বিরক্তিকর রক্ষণাবেক্ষণ জেনারেটর হায়ারারিকালিকাল অবজেক্টগুলিকে সম্পর্কিত ডেটাবেসে ম্যাপিং করছে। আমাদের চারপাশে অনেকগুলি নিফটি সমাধান রয়েছে, তবে এগুলি শেষ পর্যন্ত হায়ারারচিগুলি সমতল করার জন্য তৈরি সমস্ত হ্যাক। আপনার মডেলটি যাতে অ্যাপ্লিকেশনটির উদ্দেশ্য হিসাবে কাজ করে তা পরিবর্তনের পরিবর্তে আপনি একটি কার্যকর শ্রেণিবিন্যাস এবং লজিকাল রিলেশনাল প্রতিনিধিত্বের মধ্যে আপসকে শেষ করে দেন। আমি সত্তা / উপাদান সিস্টেম হিসাবে আমার অ্যাপ্লিকেশনগুলির মধ্যে একটিতে একটি দুর্দান্ত বৃহত শ্রেণিবিন্যাস পুনর্নির্মাণের ধারণাটি নিয়ে কাজ করে চলেছি - শ্রেণিবিন্যাসটি খাঁজ করে রাখি এবং বাকী প্রয়োগের জন্য গোল্ড স্ট্যান্ডার্ডকে ডেটাবেস তৈরি করি - এবং এটি আশাব্যঞ্জক।

যখন আপনি গতিশীল কোড জেনারেশন / কোড ক্যাশে যেমন পারফরম্যান্সের সমস্যাগুলি সমাধান করতে পারে এমন দক্ষতাগুলিকে একীভূত করেন, আপনি একটি দ্রুত, নমনীয়, লজিক্যাল আর্কিটেকচারের সাহায্যে সজ্জিত হন যা কেবলমাত্র অনেক বেশি ভাল উপায়ে ওওপির পুনরায় ব্যবহারযোগ্য কোড লক্ষ্য উপলব্ধি করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.