নকশার নিদর্শন - আপনি সেগুলি ব্যবহার করেন?


44

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

এগুলি কি আসলেই সংখ্যাগরিষ্ঠ প্রোগ্রামাররা ব্যবহার করছেন?

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

এবং এছাড়াও, আপনি যখন বিকাশ শুরু করেন তখন কি আপনি (প্রোগ্রামাররা) নিজেকে নিদর্শনগুলি খুঁজছেন (যেদিকে আমি কী বলেছিলাম?) যদি তা হয় তবে এটি অবশ্যই একটি অভ্যাস যা আমাকে অবশ্যই আলিঙ্গন করা শুরু করবে।

আপডেট: আমি মনে করি যখন আমি জিজ্ঞাসা করি প্রোগ্রামাররা সেগুলি ব্যবহার করে কিনা, আমি যখন জিজ্ঞাসা করি যে আপনার যখন সমস্যার সমাধান করতে সমস্যা হয় তখন "ওহ, আমার সেই প্যাটার্নটি ব্যবহার করা উচিত" think


7
সঠিক সদৃশ প্রশ্ন নয়, তবে আমার উত্তরটি একই হবে। প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জঞ্জ
প্রশ্নগুলি

4
ওভাররেটেড, ওভারহাইপড "নকশার ধরণগুলি" বেশিরভাগই কেবল ওওপি প্রোগ্রামিংয়ের সাথে প্রাসঙ্গিক। এবং যতক্ষণ সম্ভব ওওপি থেকে দূরে থাকার অনেকগুলি ভাল কারণ রয়েছে।
এসকে-যুক্তি

5
আমি নিজের চেয়ে অনেক বেশি নিজেকে বিগ বলের কাদা ব্যবহার করতে দেখি। শুধু মজা করছি.
সাশোলাম

একমাত্র উত্তর হ'ল "যখন উপযুক্ত হবে" এর শর্তাধীন বিবৃতি সহ
রিগ

উত্তর:


114

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

নতুন প্রোগ্রামাররা ডিজাইনের নিদর্শনগুলি ব্যবহার করে না। তারা নকশা নিদর্শন অপব্যবহার।

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

অভিজ্ঞ প্রোগ্রামাররা ডিজাইনের নিদর্শনগুলি ব্যবহার করেন না। নকশার নিদর্শনগুলি সেগুলি ব্যবহার করে।


2
@ শ্লিংগেল - কেন আপনি ওপি স্যারকে ডাকছেন?
ওদেড

10
@ ওডড আমি এই পরিস্থিতিতে আমার "স্যার" বলা এবং আমার উপভোগ করার অধিকার সংরক্ষণ করি।
লুনিভোর

3
স্যার অবশ্যই স্যার. কোন অপরাধ মানে না!
ওডে

1
সোভিয়েত রাশিয়ায় .. :)
সোরান্টিস

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

43

এক তাদের স্বীকৃতি দেয় বা না হোক না কেন, বেশির ভাগ প্রোগ্রামাররা কি ব্যবহার নিদর্শন।

দিনের কাজের দিনে যাইহোক, কেউ একটি প্যাটার্নটি মাথায় রেখে প্রোগ্রামিং শুরু করে না - কেউ বুঝতে পারে যে একটি প্যাটার্ন কোডে প্রকাশ পেয়েছে এবং তার পরে নামকরণ করে names

কয়েকটি সাধারণ নিদর্শনগুলি কয়েকটি ভাষায় নির্মিত হয় - উদাহরণস্বরূপ, কীওয়ার্ড সহ সি # তে অন্তর্নির্মিত পুনরাবৃত্ত প্যাটার্নforeach

কখনও কখনও আপনি ইতিমধ্যে আপনি যে প্যাটার্নটি হাতের সমস্যার সাধারণ সমাধান হিসাবে ব্যবহার করবেন তা ইতিমধ্যে জানেন ( রিপোজিটরি প্যাটার্নটি বলুন - আপনি ইতিমধ্যে জানেন যে আপনি ইন-মেমরি সংগ্রহ হিসাবে আপনার ডেটা উপস্থাপন করতে চান)।


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

27
@ ডেড এমজি এটি কেন?
ক্রিস হার্পার

11
@ ডেড এমএমজি: আমি অবশ্যই অন্ধভাবে বোকা ধারণা দ্বারা অন্ধ হয়ে গিয়েছিলাম - আপনি কেন এটি বোকা মনে করেন তা আমি দেখতে পাচ্ছি না ;-)
ট্রেব

2
@ রুট 45 - আপনি বন্ধু দেখেন, foreachকনস্ট্রাক্ট প্রোগ্রামিংকে খুব সহজ করে তোলে। যদি কোনও সংগ্রহের মাধ্যমে পুনরাবৃত্তি করার মতো জটিল কাজটি সহজ হয় তবে কীভাবে একজন অন্যের থেকে নিজেকে শ্রেষ্ঠ মনে করতে পারেন? আমার সমস্ত সিআরইউডি অ্যাপ্লিকেশনগুলির জন্য আমি বিধানসভায় এখনও একটি কোডের জন্য। স্পষ্টতই @ ডেডএমজির অনুভূতি হ'ল খাঁটি বাস্তববাদী প্রতিভা।
কেওসপ্যান্ডিয়ন

8
@ ডেড এমজি - লিনকিউ এর কাছাকাছি ছিল না যখন নেট 1.0 / 1.1 ছিল। yieldতখনও ছিল না। আপনি কি মনে করেন যে কোনও কীওয়ার্ড মুছে ফেলে পুরানো কোডটি ভাঙ্গা আরও ভাল বিকল্প?
ওদেড

22

উত্তর পিডিআর দ্বারা লিঙ্কিত হিসাবে: লিখিত নকশাগুলি লোকেরা যেভাবেই করছে সেগুলির জন্য দেওয়া নামগুলি , যাতে লোকেদের সেই বিষয়গুলি নিয়ে আলোচনা করা আরও সহজ করে তোলে।

সাধারণভাবে শুরু করার সময় এগুলি শিখার পক্ষে মূল্যবান কারণ তারা আপনাকে যে সমাধানগুলি কাজ করতে পারে তার সমাধানের জন্য কিছুটা অন্তর্দৃষ্টি দেয়, যাতে আপনি বছরের অভিজ্ঞতা এবং বিচার এবং ত্রুটি তৈরি করতে পারেন।

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

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


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

1
সত্য সত্য যে নকশা নিদর্শন হয় চিঠিতে জন্য +1 জিনিষ মানুষ যাহাই হউক না কেন করছিলে দেওয়া নাম
অলৌকিক দর্শন

12

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

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


+1: আমি সম্মত হই যে মাঝে মাঝে নিদর্শনগুলির অপব্যবহার করা হয়। কখনও কখনও আমি কোডটি দেখি যেখানে প্রোগ্রামার কেবল একটি প্যাটার্ন ব্যবহার করেছে কারণ সে জানত এবং ভেবেছিল এটি শীতল, তবে এটি কোডটি অহেতুক জটিল এবং পড়ার পক্ষে শক্ত করে তুলেছে। বুলডোজার দিয়ে বাদাম ফাটিয়ে ফেলার মতো। ভাষা-স্তরের সমাধানগুলি সম্পর্কে, কোনও ভাষা-স্তরের সমাধান কেবল এমন একটি প্যাটার্ন নয় যা ভাষার দ্বারা সরাসরি সমর্থিত? বা পার্থক্য কি?
জর্জিও

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

8

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


2
লিঙ্কটি আমার দিনটি তৈরি করেছে
ডিউকফগেমিং

1
সেকি। এই ওয়েব পৃষ্ঠার জন্য কিছু পাঠ্য বিন্যাস প্রয়োজন।
নাইলার

7

আপনি তাদের ব্যবহার করবেন?

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

ওয়েবে কোথাও যদি আমি আমার সমস্যা সমাধানের জন্য কোনও উপায় খুঁজে পাই তবে এটি কি ডিজাইনের ধরণ?

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

আপনি কি (প্রোগ্রামাররা) নিজেকে নিদর্শনগুলির সন্ধান করছেন?

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

আমার কোথায় বিটিডাব্লু লাগবে?

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


5

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

আমি বিশ্বাস করতে পারি না আমি প্রকাশ্যে এটি স্বীকার করেছি। আমি মনে করি আমি সম্ভবত কয়েক বছর ধরে প্রতিষ্ঠিত কোনও জিক ক্রেডিট হারিয়েছি।


3

প্রবণতা খুঁজছেন না

কোনও নির্দিষ্ট সমস্যার কোনও মানক প্রোগ্রামিং সমাধানকে ডিজাইনের ধরণ হিসাবে বিবেচনা করা যেতে পারে, তারা কতটা জনপ্রিয় তা বিবেচ্য নয়, বা অন্যান্য প্রোগ্রামাররা সেগুলি ব্যবহার করে বা না করে।

আপনি ইতিমধ্যে একটি নকশার প্যাটার্ন ব্যবহার করছেন যা এখনও আবিষ্কার / নির্দিষ্ট করা হয়নি।

এগুলি ব্যবহার করার চেষ্টা করবেন না, তাদের শর্তাবলী ভেবে দেখার চেষ্টা করুন

নকশার নিদর্শনগুলির সাথে সমস্যাটি হ'ল কখনও কখনও প্রোগ্রামাররা যখন তাদের অন্য সমস্যার মুখোমুখি হয় তখন তাদের মধ্যে তাদের সমস্যাগুলি ফিট করতে চায়।

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

বন্য মধ্যে তাদের জন্য দেখুন

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

ডেটা নিদর্শনগুলির মতো অন্যান্য নিদর্শন রয়েছে, উদাহরণস্বরূপ, ডক্ট্রাইন প্রকল্পটি একাই ব্যবহার করেছে, সক্রিয় রেকর্ড প্যাটার্ন (১.x), সত্তা ব্যবস্থাপক প্যাটার্ন (২.x), কাজের ইউনিট , সংগ্রহশালা , ক্যোয়ারী অবজেক্ট , মেটাডেটা ম্যাপিং , ডেটা ম্যাপিং এবং কৌশলগুলি এবং নকশাকারীর প্যাটার্নের মতো আরও সাধারণ কিছু ।

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

সময় আসার জন্য কেবল তাদের শিখুন

সেগুলি শিখুন, তাদেরকে জানুন, তাদের উপর মনোনিবেশ করুন এবং যখন সময় আসবে আপনি কীভাবে প্রোগ্রামিংয়ের সমস্যা সমাধান করবেন তা জানেন x, আপনি ইতিমধ্যে সেই সময়ের মধ্যে আরও ভাল প্রোগ্রামার হয়ে উঠবেন।

স্থপতি হন

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


1

আমি প্রায় 2 বছর আগে সি ++ এ প্রায় 7 বছর প্রোগ্রাম করেছি এবং নিদর্শনগুলি শিখেছি। বেশিরভাগ নিদর্শনগুলিতে সম্ভবত কিছু অ্যাপ্লিকেশন রয়েছে তবে আমার ব্যবহারে কিছু অন্যের চেয়ে ভাল। আপনি তাদের কেন ব্যবহার করছেন তা ভাবতে হবে।

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

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

আমি এটি "ডিজাইনের ধরণ" বলে না জেনেও কয়েক বছর ধরে টেমপ্লেট পদ্ধতিটি ব্যবহার করেছি used

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

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


1

লুনিভোরে যুক্ত হচ্ছে। আইডি প্রথম বই থেকে এই উদ্ধৃতি দিতে চান

        ## **Three steps to great software** ##     
  • নিশ্চিত হয়ে নিন যে সফ্টওয়্যারটি গ্রাহক যা চায় তাই করছে
  • ভাল অবজেক্ট-ভিত্তিক নীতি প্রয়োগ করুন
  • একটি রক্ষণাবেক্ষণযোগ্য, পুনরায় ব্যবহারযোগ্য ডিজাইনের জন্য প্রচেষ্টা করুন

এটি তৃতীয় পর্যায়ে রয়েছে, আপনার সিস্টেমটি যেভাবে কাজ করার কথা বলেছে সেভাবে কাজ করার পরে your আপনার সফ্টওয়্যারটি আসার জন্য বছরের পর বছর ধরে তৈরি করার জন্য নিদর্শনগুলি প্রয়োগ করার সময়।


0

এগুলি কি আসলেই সংখ্যাগরিষ্ঠ প্রোগ্রামাররা ব্যবহার করছেন?

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

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

না, এটি আমার মনে নকশার নকশা নয়। একটি নকশার প্যাটার্নে ক্লাস এবং পদ্ধতিগুলির কিছু ব্যবস্থা থাকে যা কোনও প্যাটার্নের রেসিপিটি সংজ্ঞায়িত করে।

আমি সেখানে একটি সাধারণ অনুশীলন হিসাবে আপনি কী করেছেন তা ভাবতে পছন্দ করব। যদিও কপি এবং পেস্ট কোডিং সম্পর্কে সাবধান থাকুন।

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

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


0

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

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


0

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

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