একটি সময়ের বিলম্ব অনুকরণের জন্য আমি কীভাবে 'কমান্ড' এবং 'সংমিশ্রণ' একত্র করব?


9

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

আমি আমার সমস্যায় নকশার নিদর্শনগুলি প্রয়োগ করতে চাই, তবে আমি খুব কঠিন সময় কাটাচ্ছি।

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

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

আমি যা দেখতে পেতাম তা পড়েছি, তবে এখনও সঠিক পথে আমার একটি ধাক্কা দরকার:


9
প্যাটার্নস সরঞ্জাম। কেউ হাতুড়ি এবং স্ক্রু ড্রাইভার নেয় না এবং মনে করে আমি একটি বাড়ি তৈরি করব। পরিবর্তে, একটি বাড়ি তৈরি শুরু করুন এবং বুঝতে পারেন যেখানে একটি হাতুড়ি কোনও কাজকে আরও সহজ করে তুলবে।

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

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

1
বিশেষত, আপনি সিমুলেশন ইভেন্ট সেট এর জন্য একটি কার্যকর ডেটা স্ট্রাকচার খুঁজে পেতে পারেন এসিএম এর আগস্ট 1977 এর যোগাযোগ থেকে খণ্ড 20, সংখ্যা 8 বেশ কার্যকর (এই শিরোনামটির জন্য একটি গুগল অনুসন্ধানে একটি পিডিএফ টানা উচিত - আমি লিঙ্ক করতে সমস্যা করছি এটি) - এটি ডেটা স্ট্রাকচার বাস্তবায়নের ধারণার মধ্য দিয়ে যায় যা একটি সূচকযুক্ত তালিকার তুলনায় উল্লেখযোগ্যভাবে উন্নত হয়।

1
এখানে সিটিসিয়ার্সে হোস্ট করা এসিএম পেপারের একটি লিঙ্ক।
ফ্রাঙ্ক

উত্তর:


1

আপনি স্কালায় প্রোগ্রামিং থেকে একটি উদাহরণ দেখতে চাইতে পারেন , কারণ তাদের একটি সিমুলেটর রয়েছে যা আপনি জাভাতে যা করার চেষ্টা করছেন তা করে:

http://www.cs.helsinki.fi/u/wikla/OTS/Sisalto/examples/html/ch30.html#sec6

তাদের পদ্ধতির দিকে তাকিয়ে আপনি নিজের পছন্দসই আচরণটি পেতে আপনার প্রোগ্রামটি কীভাবে পরিবর্তন করবেন তা আবিষ্কার করতে পারেন।

আপনি উল্লেখ করেছেন যে আপনি এটিকে সহজেই যুক্ত করতে পারবেন না, তাই আপনার দৃষ্টিভঙ্গি কী এবং আপনার যে সমস্যার মুখোমুখি হচ্ছে তা কেন ব্যাখ্যা করবেন না, তাই লোকে আপনাকে এমন কিছু পরামর্শ দিতে পারে যা আপনি বিবেচনা না করেছেন।

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

মূলত একটি প্রচারের বিলম্ব শক্ত হওয়া উচিত নয়।

আপনার কাছে একটি বেস ক্লাস থাকতে পারে Gateএবং এটি তার বিলম্বের মধ্যে রয়েছে।

সমস্ত দরজা এটি থেকে প্রসারিত, এবং প্রকৃত বিলম্ব সেট করে।

এখন, আপনি যখন কোনও সিগন্যাল অনুসরণ করছেন, যখন কোনও গেটে থাকবেন তখন সেই থ্রেডটি সিমুলেটেড দেরির জন্য ঘুমোতে পারে, তবে এর অর্থ হ'ল আপনাকে রিয়েল-টাইমটি আপনার সিমুলেটেড সময়টিতে মানচিত্র তৈরি করতে হবে, কারণ আপনার সিমুলেটরটি একটি বাস্তব সিস্টেমের চেয়ে ধীর হবে will হবে.

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

এটি গেম লুপের মতো হবে।


0

অন্য কথায়, আমি আমার গেটগুলি লুপ করার সাথে সাথে দেখতে পাচ্ছি যে 'গেট' এক্স 'গুলি চালানো উচিত।

তারপরে আপনি কমান্ড প্যাটার্নটি ব্যবহার করছেন না।

আমার যদি একটি 'সম্মিলিত' গেট থাকে তবে এটির কি নিজস্ব নিজস্ব প্রেরণকারী রয়েছে?

প্রিয় godশ্বর না। সম্মিলিত প্যাটার্নটির সম্পূর্ণ বিন্দুটি হ'ল আপনি কোনও স্থানে কোনও যৌগিক অবজেক্ট সরবরাহ করতে পারেন যা কেবলমাত্র একটি অবজেক্টের প্রত্যাশা করে। এটি আপনাকে বুদ্ধিমানভাবে আচরণ রচনা করতে দেয় allows

সারিটি পরিচালনা করতে আমার কি একটি একক ব্যবহার করতে হবে?

কোনভাবেই না. আপনার কাছে পুরো বিশ্বে কেবল একটি রান্না এবং একটি ওয়েট্রেস রয়েছে? তাদের কি কেবল একটি রান্নাঘর আছে?

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

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

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