কীভাবে কোনও সত্তা উপাদান সিস্টেমে "ব্লব-সিস্টেমগুলি" এড়ানো যায়?


10

বর্তমানে আমি নিম্নলিখিত সমস্যার মুখোমুখি:

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

সুতরাং উদাহরণস্বরূপ আমার আন্দোলন সিস্টেমটি এমন সমস্ত সত্তার সন্ধান করে যাগুলির একটি অবস্থানের উপাদান এবং একটি আন্দোলনের উপাদান রয়েছে। অবস্থানের উপাদানটি কেবল পজিশনটি রাখে এবং আন্দোলনের উপাদানটি গতি ধারণ করে।

তবে আসল সমস্যাটি আমার সংঘর্ষের সিস্টেম। এই শ্রেণিটি একটি লজিকাল ব্লবের মতো। এই ক্লাসে আমার এত বিশেষ মামলা রয়েছে।

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

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

আমি দেখতে পাচ্ছি যে সত্তা উপাদান উপাদানটি একটি ভাল জিনিস কারণ এটি নমনীয় এবং উত্তরাধিকার নিয়ে আপনার সমস্যা নেই। তবে আমি বর্তমানে পুরোপুরি আটকা পড়েছি।

আমি কি খুব জটিল ভাবছি? এই সমস্যাটি কীভাবে সামলাতে হবে?

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

তবে এটি আমার কাছেও সঠিক সমাধান বলে মনে হয় না, কারণ উদাহরণস্বরূপ:

  1. আমার আন্দোলন-পরবর্তী সংঘর্ষের সিস্টেমে এমন একটি সত্ত্বাগুলি প্রয়োজন যাগুলির একটি পজিশন উপাদান, একটি আন্দোলনের উপাদান এবং সংঘর্ষের উপাদান রয়েছে। তারপরে এটি সত্তার গতি শূন্যে সেট করবে।
  2. পদার্থবিজ্ঞানের পরবর্তী সংঘর্ষের সিস্টেমে এমন একটি সত্তা প্রয়োজন যাগুলির অবস্থান উপাদান, একটি চলাচল উপাদান, একটি সংঘর্ষের উপাদান এবং একটি পদার্থবিজ্ঞানের উপাদান রয়েছে। তারপরে এটি গতির ভেক্টরকে প্রতিফলিত করবে।

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

কোনও সত্তা উপাদান সিস্টেমে এই সমস্যাগুলি কীভাবে সাধারণভাবে সমাধান করা হয়? এই সমস্যাগুলি কি স্বাভাবিক কি আমি বা কোনও ভুল করছি? যদি হ্যাঁ, পরিবর্তে এটি কীভাবে করা উচিত?

উত্তর:


11

হ্যাঁ, আপনি খুব জটিল ভাবছেন।

দেখে মনে হচ্ছে আপনার অনেকগুলি সমস্যার সমাধান মেসেজিং সিস্টেম এবং কিছু অতিরিক্ত বৈশিষ্ট্য যা আপনাকে কয়েকটি ফিল্টার নির্দিষ্ট করার অনুমতি দেয় এবং অবশেষে সত্তা / উপাদানগুলির সাথে এত কঠোর হওয়ার বিষয়ে চিন্তা না করে।

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

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

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


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

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

3
@ এলমি: ইউনিটি কোনও উপাদান উপাদান নয় যদিও এটি উপাদান-ভিত্তিক। ইসিএসের গেম অবজেক্ট উপাদানগুলি কেবল ব্যবহার এবং ব্যবহারের চেয়ে কিছু বরং কঠোর গাইডলাইন ( কোনও নিয়ম হিসাবে কোনও প্যাটার্নের কথা ভাবেন না ) has ধারাবাহিক নিবন্ধের কারণে এখনই গেম ডেভেলপারদের কয়েকটি বিভাগে ইসিএস জনপ্রিয় তাই সাধারণভাবে উপাদান উপাদান ভিত্তিক নকশার চেয়ে বিশেষত ইসিএসে প্রচুর প্রশ্ন রয়েছে।
শান মিডলডিচ

12

আপনি অত্যধিক জটিল জিনিস। আমি এতদূর যেতে পারি যে এমনকি উপাদান-ভিত্তিক নকশা ব্যবহার করা যেমন একটি সাধারণ গেমের জন্য কেবল ওভারকিল। আপনার গেমটিকে দ্রুত এবং বিকাশে সহজ করে তোলে এমন জিনিসগুলি করুন। উপাদানগুলি বিভিন্ন ধরণের আচরণ এবং গেম অবজেক্ট কনফিগারেশনের সাহায্যে বৃহত্তর প্রকল্পগুলিতে পুনরাবৃত্তিতে সহায়তা করে তবে এ জাতীয় একটি সহজ-সংজ্ঞায়িত গেমটিতে তাদের সুবিধা আরও প্রশ্নবিদ্ধ। আমি এই সম্পর্কে গত বছর একটি কথা বলেছিলাম: আপনি যদি কোনও স্থাপত্যের সাথে যুক্ত থাকার পরিবর্তে কোনও গেম তৈরি করতে মনোনিবেশ করেন তবে আপনি কয়েক ঘন্টার মধ্যে মজার ছোট্ট গেমগুলি তৈরি করতে পারেন । যদি আপনার 100 বা 20 টি বিভিন্ন ধরণের অবজেক্ট থাকে তবে উত্তরাধিকার ভেঙে যায় তবে কেবলমাত্র যদি আপনার হাতে কয়েকটা জিনিস থাকে তবে এটি ঠিক কাজ করে।

ধরে নিই যে আপনি শেখার উদ্দেশ্যে উপাদানগুলি ব্যবহার করা চালিয়ে যেতে চান, আপনার পদ্ধতির সাথে কিছু স্পষ্ট সমস্যা রয়েছে যা সামনে দাঁড়িয়ে।

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

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

কাস্টম পদার্থবিজ্ঞানের জন্য ইঞ্জিনগুলি মনে রাখবেন যে আপনার উপাদানগুলিতে ডেটা রাখার অনুমতি রয়েছে। হতে পারে জেনেরিক পং পদার্থবিজ্ঞানের উপাদানটিতে এমন কোন ডেটা রয়েছে যা নির্দেশ করে যে এটি কোন vec2(0,1)অক্ষকে অগ্রসর করতে পারে (বলুন, প্যাডেলগুলির গুণক হিসাবে যা কেবল ওয়াই অক্ষের উপরে চলে যেতে পারে এবং vec2(1,1)বলটি ইঙ্গিত করে যে এটি চলতে পারে), একটি পতাকা বা ভাসমান দৃating়তার সাথে ইঙ্গিত দিচ্ছে বল সাধারণত থাকত 1.0এবং প্যাডেল এ থাকত0.0), ত্বরণ বৈশিষ্ট্য, বেগ এবং আরও অনেক কিছু। এটিকে প্রতিটি সম্পর্কিত উচ্চ-সম্পর্কিত তথ্যের জন্য এক হাজার হাজার বিভিন্ন মাইক্রো উপাদানগুলিতে বিভক্ত করার চেষ্টা করা হচ্ছে ইসিএস মূলত যা করছিল তা তার বিপরীতে। যে জিনিসগুলি সম্ভব একই উপাদানগুলিতে একসাথে ব্যবহৃত জিনিসগুলি রাখুন এবং প্রতিটি গেম অবজেক্ট কীভাবে সেই ডেটা ব্যবহার করে তার মধ্যে একটি বড় পার্থক্য থাকলে কেবল সেগুলি বিভক্ত করুন। পংয়ের জন্য বল এবং প্যাডেলগুলির মধ্যে পদার্থবিজ্ঞানের আলাদা উপাদান হওয়ার পক্ষে আলাদা করার পক্ষে একটি যুক্তি রয়েছে, তবে বৃহত্তর গেমের জন্য, 1-3 টিতে ঠিক যেটি কাজ করে তা করার জন্য 20 টি উপাদান তৈরি করার চেষ্টা করার সামান্য কারণ নেই।

মনে রাখবেন, যদি / যখন আপনার ইসিএসের সংস্করণটি আসে তবে আপনার গেমটি তৈরি করার জন্য আপনার যা প্রয়োজন তা করুন এবং কোনও নকশার প্যাটার্ন / আর্কিটেকচারের সাথে কুকুরযুক্ত আনুগত্য ভুলে যান।


1
সত্যিই আপনাকে ধন্যবাদ! আমি জানি, একটি ইসিএস পংয়ের মতো ছোট গেমের জন্য খুব ভাল স্কেল করে না। তবে আমি কেবল এটি ব্যবহার করে দেখতে পেলাম যে এই জাতীয় জিনিসটি বাস্তবে কীভাবে প্রয়োগ করা হয় এবং এটি কীভাবে কাজ করে। আমি উপাদানগুলি এত ছোট করে দিয়েছি, কারণ বেশিরভাগ নিবন্ধেই আমি এটি পড়েছিলাম read অনেকগুলি উপাদান থাকা এবং প্রতিটি উপাদান কেবল প্রাথমিক ডেটা ধারণ করে। সুতরাং, আমি কি আপনাকে সঠিকভাবে বুঝতে পারি, আপনি উত্তরাধিকার এবং ইসিএসের মধ্যে একটি মিশ্রণ ব্যবহার করার পরামর্শ দিয়েছেন? আপনি যেমনটি বলছেন "বল এবং প্যাডেলগুলি পৃথক উপাদান হিসাবে যথেষ্ট আলাদা"। সুতরাং উদাহরণস্বরূপ আমি তাদের উভয়কে একটি আন্দোলন / অবস্থান উপাদান (সম্ভবত একটি উপাদান হিসাবে) এবং
এম0rgenstern

1
যাই হোক না কেন কাজ করে. গেমটি তৈরির দিকে মনোনিবেশ করুন। আমার আক্ষরিক অর্থে এমন একটি উপাদান থাকবে Ballযা বলের মতো চলন, বাউনিং ইত্যাদির জন্য সমস্ত যুক্তি যুক্ত করে এবং একটি Paddleউপাদান যা ইনপুট নেয়, তবে তা আমি। যা আপনার কাছে সর্বাধিক উপলব্ধি করে এবং আপনার পথ থেকে সরে যায় এবং আপনাকে গেমটি তৈরি করতে দেয় জিনিসগুলি করার "সঠিক উপায়"।
শান মিডলডিচ

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

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

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

-2

আমার মতে *), উপাদানগুলির সাথে আপনার বৃহত্তম সমস্যাটি হ'ল: উপাদানগুলি অন্য কাউকে কী করতে হবে তা জানানোর জন্য এখানে নেই। উপাদানগুলি এখানে কাজ করার জন্য রয়েছে। কোনও জিনিসের স্মৃতি ধরে রাখার জন্য আপনার কাছে কোনও উপাদান নেই এবং তারপরে অন্যান্য উপাদানগুলি এটি পরিচালনা করে। আপনি যে উপাদানগুলি পেয়েছেন সেগুলি দিয়ে স্টাফ করুন।

আপনি যদি নিজেকে অন্য উপাদানগুলির উপস্থিতির জন্য পরীক্ষা করে দেখেন (এবং তারপরে সেখানে ফাংশনগুলি কল করুন), তবে এটি একটি পরিষ্কার লক্ষণ, যে দুটি জিনিসের একটিরও সত্য:

  • আপনি প্রকৃতপক্ষে নির্ভরতা উল্টাতে চান: অন্য উপাদানটি আপনার বর্তমান উপাদানটির প্রতিক্রিয়া হিসাবে তাদের যুক্তি সম্পাদন করার জন্য ইভেন্ট / বার্তা / সম্প্রচার / হুক / হাওরিউয়েলনেম শুনতে হবে should বর্তমান উপাদানটি এমনকি একটি "অন্যান্য" উপাদান রয়েছে তা জানতে হবে না। এটি বেশিরভাগ ক্ষেত্রেই ঘটে থাকে, যদি আপনি নিজেকে কার্যকারীতার সাথে বিভিন্ন উপাদান (এমনকি অন্য কোনও / কেস ব্লকগুলিতে) কল করে থাকেন যা আপনার বর্তমান পদ্ধতির সাথে সত্যই সংযুক্ত নয়। এই সমস্ত ভাবুন Invalidate()বা SetDirty()অন্যান্য উপাদানগুলিতে কল করুন।
  • আপনার অনেকগুলি উপাদান থাকতে পারে। যদি দুটি উপাদান কেবল একে অপরকে ছাড়া বাঁচতে না পারে এবং ক্রমাগত ডেটা পুনরুদ্ধার এবং একে অপরের কাছে কল করার পদ্ধতিগুলির প্রয়োজন হয়, তবে কেবল তাদের মার্জ করুন। স্পষ্টতই, তারা যে কার্যকারিতা সরবরাহ করে তা এতটাই জড়িয়ে যায় যে এটি আসলে সত্যই কেবল একটি জিনিস।

যাইহোক, এগুলি কেবলমাত্র সত্তা / উপাদান উপাদানগুলিই নয়, সাধারণ "গেমওজেক্ট" এর এমনকি লাইব্রেরির ফাংশন সহ ক্লাসিক উত্তরাধিকারের ক্ষেত্রেও প্রযোজ্য kinds

*) সত্যিই আমারহোয়াট দা রি রিয়েল কম্পোনেন্ট সিস্টেমজ (টিএম) সম্পর্কে মতামতগুলি ব্যাপকভাবে পরিবর্তিত হয়

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