ধরুন আপনার নিম্নলিখিতগুলি রয়েছে:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deer
থেকে উত্তরাধিকার সূত্রে প্রাপ্ত Animal
, এবং Grass
উত্তরাধিকার সূত্রে প্রাপ্ত Food
।
এ পর্যন্ত সব ঠিকই. Animal
বস্তু বস্তু খেতে Food
পারে।
এবার এটি কিছুটা মিশ্রিত করা যাক। আসুন Lion
যা থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় Animal
।
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
এখন আমরা কারণ একটি সমস্যা আছে Lion
উভয় খেতে পারেন Deer
এবং Grass
, কিন্তু Deer
করা হয় না Food
এটা Animal
।
একাধিক উত্তরাধিকার ব্যবহার এবং অবজেক্ট ওরিয়েন্টেড ডিজাইন ব্যবহার করে আপনি কীভাবে এই সমস্যার সমাধান করবেন?
এফওয়াইআই: ASCII ডায়াগ্রামগুলি তৈরি করতে আমি http://www.asciiflow.com ব্যবহার করেছি ।
IHuntable
, মেষ এবং গরু হ'লIHerdable
(মানুষের দ্বারা নিয়ন্ত্রিত), এবং সিংহ কেবল আইএনিমাল প্রয়োগ করে, যা কোনও ইন্টারফেসের দ্বারা বোঝায় না। AOE3 কোনও নির্দিষ্ট অবজেক্ট (অনুরূপ instanceof
) দ্বারা সমর্থিত ইন্টারফেসগুলির সেট অনুসন্ধান করতে সহায়তা করে যা কোনও প্রোগ্রামকে তার ক্ষমতা জিজ্ঞাসা করতে সক্ষম করে allows