শ্রেণিবিন্যাস জোর না করে আমি কীভাবে একে অপরের সাথে আলাপচারিতা এবং যোগাযোগ করার জিনিস রাখতে পারি?


9

আমি আশা করি এই দুর্বৃত্তরা আমার প্রশ্নটি পরিষ্কার করে দেবে - তবে তারা যদি না জানত তবে আমি পুরোপুরি বুঝতে পারতাম, তবে যদি ঘটনাটি ঘটে তবে আমাকে জানান, এবং আমি নিজেকে আরও পরিষ্কার করার চেষ্টা করব।

অবজেক্ট-ভিত্তিক গেম বিকাশের সাথে পরিচিত হওয়ার জন্য বক্সপংয়ের সাথে মিলিত হওয়া একটি খুব সাধারণ খেলা। বলটি নিয়ন্ত্রণ করতে এবং হলুদ জিনিস সংগ্রহ করতে বাক্সটি টানুন।
বক্সপং তৈরি করা আমাকে অন্যান্য বিষয়গুলির মধ্যে একটি মৌলিক প্রশ্ন গঠনে সহায়তা করেছিল: আমার কীভাবে এমন বস্তু থাকতে পারে যা একে অপরের সাথে "সম্পর্কযুক্ত" না হয়ে একে অপরের সাথে যোগাযোগ করে? অন্য কথায়, কোনও পদার্থের জন্য শ্রেণিবদ্ধ না হয়ে পরিবর্তে সহাবস্থান করার কি উপায় আছে? (আমি আরও বিশদে নীচে যাব।)

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

বিশেষত বক্সপংয়ের মতো সাধারণ গেমগুলিতে এটি স্পষ্ট যে একই স্তরে মুষ্টিমেয় কিছু বস্তু সহাবস্থান রয়েছে বা হওয়া উচিত। একটি বাক্স আছে, একটি বল আছে, সংগ্রহযোগ্য ble অবজেক্ট-ভিত্তিক ভাষায় আমি সমস্ত প্রকাশ করতে পারি, যদিও - বা তাই মনে হয় - হ'ল- কঠোর সম্পর্ক। এটি সদস্য ভেরিয়েবলের মাধ্যমে সম্পন্ন হয়েছে। আমি শুধু বন্ধ না শুরু করতে পারেন ballএবং তার জিনিস না দেওয়া, আমি স্থায়ীভাবে তা প্রয়োজন অন্তর্গত অন্য বস্তুর জন্য। আমি এটা সেট করেছি আপ করুন যাতে মূল খেলা বস্তু রয়েছে একটি বাক্স, এবং পালাক্রমে বক্স রয়েছে একটি বল, এবং হয়েছে একটি স্কোর কাউন্টার। প্রতিটি বস্তুর একটিও রয়েছেupdate()পদ্ধতি, যা অবস্থান, দিক ইত্যাদি গণনা করে এবং আমি সেখানে একইভাবে চলেছি: আমি মূল গেমের অবজেক্টের আপডেট পদ্ধতিটি কল করি, যা তার সমস্ত বাচ্চার আপডেট পদ্ধতিগুলি কল করে এবং তারা তাদের সমস্ত বাচ্চার আপডেট পদ্ধতিগুলি কল করে । কোনও অবজেক্ট-ওরিয়েন্টেড গেমটি দেখতে আমি এটি দেখতে পাচ্ছি তবে আমি অনুভব করি যে এটি আদর্শ উপায় নয়। সর্বোপরি, আমি বলটিকে বাক্সের সাথে সম্পর্কিত হিসাবে ভাবব না, বরং একই স্তরে থাকছিলাম এবং এটির সাথে ইন্টারঅ্যাক্ট করব। আমি মনে করি যে সমস্ত গেমের অবজেক্টগুলিকে মূল গেমের অবজেক্টের সদস্য ভেরিয়েবলগুলিতে পরিণত করার মাধ্যমে এটি অর্জন করা যেতে পারে, তবে আমি কিছুই সমাধান করতে দেখছি না। আমি বলতে চাই ... সুস্পষ্ট গোলমালকে একপাশে রেখে বল এবং বাক্সে একে অপরকে জানার উপায় কী হবে, অর্থাত্ ইন্টারঅ্যাক্ট করার?

একে অপরের মধ্যে তথ্য পাস করার জন্য প্রয়োজনীয় বস্তুর বিষয়টিও রয়েছে। এসএনইএস-এর জন্য আমার কাছে লেখার কোডের বেশ খানিকটা অভিজ্ঞতা রয়েছে, যেখানে আপনি পুরো সময় পুরো র‍্যামে অ্যাক্সেস পান। বলুন আপনি সুপার মারিও ওয়ার্ল্ডের জন্য একটি কাস্টম শত্রু করছেন , এবং আপনি এটি মারিওয়ের সমস্ত কয়েন মুছে ফেলতে চান, তবে কেবল 0 ডাব্লুএফএফ ঠিকানার জন্য শূন্য সংরক্ষণ করুন, কোনও সমস্যা নেই। শত্রুরা প্লেয়ারের স্ট্যাটাস অ্যাক্সেস করতে পারে না এমন বলার কোনও সীমাবদ্ধতা নেই। আমার ধারণা আমি এই স্বাধীনতা দ্বারা নষ্ট হয়ে গিয়েছি, কারণ সি ++ এবং এর মতো আমি প্রায়শই নিজেকে ভাবছি যে কীভাবে কিছু অন্যান্য অবজেক্টের (বা এমনকি বিশ্বব্যাপী) কোনও মূল্যকে অ্যাক্সেসযোগ্য করা যায়।
বক্সপংয়ের উদাহরণ ব্যবহার করে, আমি যদি বলটি পর্দার প্রান্তগুলিকে ছাড়িয়ে যেতে চাইতাম? widthএবং শ্রেণীর heightবৈশিষ্ট্য হয় Game,ballতাদের অ্যাক্সেস আছে। আমি এই ধরণের মানগুলিতে পাস করতে পারি (হয় কনস্ট্রাক্টর বা তাদের প্রয়োজনীয় পদ্ধতিগুলির মাধ্যমে) তবে এটি আমার কাছে খারাপ অভ্যাসের চিৎকার করে।

আমার অনুমান যে আমার প্রধান সমস্যাটি হ'ল একে অপরকে জানার জন্য আমার প্রয়োজন বস্তুগুলি, তবে আমি এটি করতে কেবলমাত্র উপায়টি হ'ল কঠোর শ্রেণিবদ্ধতা, যা কুৎসিত এবং অবৈধ।

আমি C ++ এ "ফ্রেন্ড ক্লাস" শুনেছি এবং কিন্ডা জানি তারা কীভাবে কাজ করে তবে তারা যদি শেষ সমাধান হয় তবে আমি কীভাবে দেখতে পাচ্ছি না friendপ্রতিটি সি সি ++ প্রকল্পে কীওয়ার্ড pouredেলে দেওয়া হয়েছে এবং কীভাবে আসে প্রতিটি ওওপি ভাষায় ধারণার অস্তিত্ব নেই? (একই ফাংশন পয়েন্টারগুলির ক্ষেত্রেও হয়, যা আমি সম্প্রতি শিখেছি))

কোনও ধরণের উত্তরের জন্য অগ্রিম ধন্যবাদ - এবং আবারও যদি এমন কোনও অংশ থাকে যা আপনাকে বোঝায় না, তবে আমাকে জানান know


2
গেম শিল্পের বেশিরভাগ অংশ সত্ত্বা-উপাদান-সিস্টেম আর্কিটেকচার এবং এর বিভিন্নতার দিকে এগিয়ে গেছে। এটি traditionalতিহ্যবাহী ওও পদ্ধতির থেকে আলাদা মানসিকতা তবে এটি কার্যকরভাবে কার্যকর হয় এবং ধারণাটি একবারে ডুবে গেলে ityক্য এটি ব্যবহার করে। প্রকৃতপক্ষে, ইউনিটি কেবল সত্ত্বা-উপাদান অংশটি ব্যবহার করে তবে ইসিএসের বাইরে রয়েছে।
ডঙ্ক

একে অপরের অজান্তে ক্লাসকে একে অপরের সাথে সহযোগিতা করার অনুমতি দেওয়ার সমস্যাটি মধ্যস্থতাকারী নকশার প্যাটার্ন দ্বারা সমাধান করা হয়। আপনি কি এটি তাকান?
ফুহরম্যানেটর

উত্তর:


13

সাধারণভাবে, যদি একই স্তরের অবজেক্টগুলি একে অপর সম্পর্কে জানতে পারে তবে এটি খুব খারাপভাবে দেখা যায়। বস্তুগুলি একে অপরের সম্পর্কে জানতে পারলে তারা বাঁধা, বা একে অপরের সাথে মিলিত । এটি তাদেরকে পরিবর্তন করা শক্ত, পরীক্ষা করা শক্ত, বজায় রাখা শক্ত করে তোলে।

এটি দু'জনের সম্পর্কে জানে এবং তাদের মধ্যে মিথস্ক্রিয়া নির্ধারণ করতে পারে এমন "উপরে" কিছু অবজেক্ট থাকলে এটি আরও ভাল কাজ করে। দুটি সমবয়সীদের সম্পর্কে যে অবজেক্টটি জানে সেগুলি নির্ভরতা ইনজেকশনের মাধ্যমে বা ইভেন্টগুলির মাধ্যমে বা বার্তা প্রেরণের মাধ্যমে (বা অন্য কোনওভাবে ডেকলিং মেকানিজমের) মাধ্যমে তাদের বেঁধে রাখতে পারে। হ্যাঁ, এটি কিছুটা কৃত্রিম শ্রেণিবিন্যাসের দিকে নিয়ে যায় তবে স্প্যাগেটি জগাখিচুড়ি থেকে এটি আরও ভাল things এটি কেবলমাত্র আরও বেশি গুরুত্বপূর্ণ সি ++ এ, যেহেতু আপনার অবজেক্টগুলির আজীবনও মালিকানার জন্য কিছু দরকার।

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


2

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

না!

আমার মনে হয় আপনার যে মুখ্য সমস্যা হচ্ছে তা হ'ল আপনি কি "অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং" সামান্য আক্ষরিক অর্থে নিচ্ছেন? ওওপি-তে, কোনও বস্তু একটি "জিনিস" নয় এমন একটি "ধারণা" উপস্থাপন করে যার অর্থ একটি "বল", "গেম", "পদার্থবিজ্ঞান", "ম্যাথ", "তারিখ" ইত্যাদি সমস্ত বৈধ অবজেক্ট। কোনও কিছুর বিষয়ে অবজেক্টের "জানা" দরকার নেই। উদাহরণস্বরূপ, Date.Now().getTommorrow()আজকের দিনটি কম্পিউটারকে জিজ্ঞাসা করবে, আগামীকালের তারিখটি বের করার জন্য আরকেনের তারিখের বিধি প্রয়োগ করুন এবং কলারের কাছে এটি ফিরিয়ে দিন। Dateবস্তুর জানি সম্পর্কে অন্য কিছু, এটি শুধুমাত্র অনুরোধ তথ্য হিসেবে সিস্টেম থেকে প্রয়োজনীয় দরকার নেই। এছাড়াও, Math.SquareRoot(number)বর্গমূলকে কীভাবে গণনা করতে হবে তার যুক্তি ছাড়াও কিছু জানার দরকার নেই।

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

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

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

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

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


1

অবজেক্ট-ভিত্তিক গেম বিকাশের সাথে পরিচিত হওয়ার জন্য বক্সপংয়ের সাথে মিলিত হওয়া একটি খুব সাধারণ খেলা।

বক্সপং তৈরি করা আমাকে অন্যান্য বিষয়গুলির মধ্যে একটি মৌলিক প্রশ্ন গঠনে সহায়তা করেছিল: আমার কীভাবে এমন বস্তু থাকতে পারে যা একে অপরের সাথে "সম্পর্কযুক্ত" না হয়ে একে অপরের সাথে যোগাযোগ করে?

এসএনইএস-এর জন্য আমার কাছে লেখার কোডের বেশ খানিকটা অভিজ্ঞতা রয়েছে, যেখানে আপনি পুরো সময় পুরো র‍্যামে অ্যাক্সেস পান। বলুন আপনি সুপার মারিও ওয়ার্ল্ডের জন্য একটি কাস্টম শত্রু করছেন, এবং আপনি এটি মারিওয়ের সমস্ত কয়েন মুছে ফেলতে চান, তবে কেবল 0 ডাব্লুএফএফ ঠিকানার জন্য শূন্য সংরক্ষণ করুন, কোনও সমস্যা নেই।

আপনি অবজেক্ট-ভিত্তিক প্রোগ্রামিংয়ের বিন্দুটি অনুপস্থিত বলে মনে হচ্ছে।

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

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

অবজেক্ট ওরিয়েন্টেড কোড হ'ল আপনার কোডটি বিমূর্তির উপর নির্ভর করে এবং বিশদ নয়। পরিবর্তে তাই

class Mario
{
    public:
        int coins;
}

আপনি লিখতে হবে

class Mario
{
    public:
        void LoseCoins();

    private:
        int coins;
}

এখন, আপনি কীভাবে মারিও তার মুদ্রাগুলি কোনও দীর্ঘ থেকে দ্বিগুণ বা একটি নেটওয়ার্কে সঞ্চয় করতে বা এটি একটি ডাটাবেসে সঞ্চয় করতে বা কোনও অন্য দীর্ঘ প্রক্রিয়া বন্ধ করতে চান তা পরিবর্তন করতে চান, আপনি এক জায়গায় পরিবর্তন করতে পারেন: মারিও ক্লাস এবং আপনার অন্যান্য সমস্ত কোড কোনও পরিবর্তন ছাড়াই কাজ করে চলেছে।

অতএব, আপনি জিজ্ঞাসা যখন

আমি কীভাবে এমন জিনিস থাকতে পারি যা একে অপরের সাথে "অন্তর্ভুক্ত" না হয়ে একে অপরের সাথে যোগাযোগ করে?

আপনি সত্যিই জিজ্ঞাসা করছেন:

আমার কীভাবে এমন কোড থাকতে পারে যা সরাসরি কোনও বিমূর্ততা ছাড়াই একে অপরের উপর নির্ভর করে?

যা ওরিয়েন্টেড প্রোগ্রামিং নয়।

আমি আপনাকে এখানে সমস্ত কিছু পড়তে শুরু করার পরামর্শ দিচ্ছি: http://objectmentor.com/omSolutions/oops_what.html এবং তারপরে রবার্ট মার্টিনের দ্বারা প্রতিটি কিছুর জন্য ইউটিউব অনুসন্ধান করুন এবং এটি সমস্ত দেখুন।

আমার উত্তরগুলি তাঁর কাছ থেকে পাওয়া, এবং এর কয়েকটি তার থেকে সরাসরি উদ্ধৃত হয়েছে।


উত্তরের জন্য ধন্যবাদ (এবং আপনি যে পৃষ্ঠাটি লিঙ্ক করেছেন; আকর্ষণীয় দেখায়)। আমি আসলে বিমূর্ততা এবং পুনঃব্যবহারযোগ্যতা সম্পর্কে জানি তবে আমার ধারণা আমি এটিকে আমার উত্তরে খুব ভালভাবে ফেলিনি। তবে আপনি যে উদাহরণ কোডটি দিয়েছিলেন সেখান থেকে আমি এখন আমার কথাটি আরও ভালভাবে বর্ণনা করতে পারি! আপনি মূলত বলছেন যে শত্রু অবজেক্টটি করা উচিত নয় mario.coins = 0;, তবে mario.loseCoins();যা সঠিক এবং সত্য - তবে আমার বক্তব্যটি কীভাবে শত্রুরা সেই marioবস্তুর অ্যাক্সেস পেতে পারে ? marioসদস্য ভেরিয়েবল হওয়া enemyআমার পক্ষে ঠিক মনে হয় না।
ভিভি

ওয়েল এর সহজ উত্তর হ'ল শত্রুতে কোনও ফাংশনের যুক্তি হিসাবে মারিওকে পাস করা। আপনার কাছে মারিওনিয়ারবি () বা অ্যাটাকমারিও () এর মতো কোনও ফাংশন থাকতে পারে যা কোনও মারিওকে যুক্তি হিসাবে গ্রহণ করবে। সুতরাং যখনই যখন কোনও শত্রু এবং একটি মারিও ইন্টারঅ্যাক্ট করা উচিত এর পিছনে যুক্তিটি ট্রিগার করা হয়, আপনি তখন শত্রু.মারিওনিয়ারবি (মারিও) ডাকতেন যা মারিও.লুসকাইনস () বলে; পরে রাস্তায় নেমে আপনি সিদ্ধান্ত নিতে পারেন যে শত্রুদের এমন একটি শ্রেণি রয়েছে যার কারণে মারিও কেবল একটি মুদ্রা হারিয়ে ফেলতে পারে এমনকি মুদ্রাও অর্জন করে। সেই পরিবর্তনটি করার এখন আপনার কাছে একটি জায়গা রয়েছে যা অন্য কোডে পার্শ্ব প্রতিক্রিয়া পরিবর্তন করে না।
মার্ক মুফিন

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

@ তেজরা কিন্তু তারপরে, এই উচ্চতর অর্ডার অবজেক্টগুলি কি পুনরায় ব্যবহারযোগ্য নয়? এটি মনে হয় যে এই বস্তুগুলি ফাংশন হিসাবে কাজ করে, তারা কেবল তাদের প্রদর্শিত প্রক্রিয়া হিসাবে উপস্থিত রয়েছে।
স্টিভ চ্যামিলার্ড

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

0

আপনি মধ্যস্থতার প্যাটার্ন প্রয়োগ করে আলগা দম্পতি সক্ষম করতে পারেন। এটি বাস্তবায়নের জন্য আপনাকে মধ্যস্থতাকারী উপাদানটির একটি রেফারেন্স থাকা দরকার যা সমস্ত প্রাপ্ত উপাদানগুলি জানে।

এটি "গেম মাস্টার, অনুগ্রহ করে এটি এবং এটি হতে দিন" ধরণের চিন্তাভাবনা উপলব্ধি করে।

একটি সাধারণ প্যাটার্ন হ'ল প্রকাশ-সাবস্ক্রাইব প্যাটার্ন। মধ্যস্থতাকারীর বেশি যুক্তি না থাকলে এটি উপযুক্ত। অন্যথায় একটি হস্তনির্মিত মধ্যস্থতাকারী ব্যবহার করুন যা জানে যে সমস্ত কলগুলিকে কোথায় রুট করতে হবে এবং এমনকি তাদের সংশোধন করতে পারে।

সিঙ্ক্রোনাস এবং অ্যাসিক্রোনাস ভেরিয়েন্টগুলি সাধারণত ইভেন্ট বাস, ম্যাসেজ বাস বা ম্যাসেজের সারি নামযুক্ত। আপনার নির্দিষ্ট ক্ষেত্রে তারা উপযুক্ত কিনা তা নির্ধারণ করতে তাদের অনুসন্ধান করুন।

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