সফ্টওয়্যার ওয়ার্ল্ডের বাইরের লোকেদের কীভাবে আপনার ডিজাইন প্যাটার্নগুলি ব্যাখ্যা করা উচিত


10

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

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


2
ডিজাইনের নিদর্শনগুলি হল সফ্টওয়্যার বিকাশ যা গণিতের ক্ষেত্রে বিভাগের তত্ত্বটি। । । কমপক্ষে আমি একজন গণিতবিদকে এটি ব্যাখ্যা করব।
এরিক উইলসন

এটি ধাঁধা বইয়ের উত্তর বিভাগগুলি পড়ার মতো। আপনি প্রতিটি ধাঁধার উত্তর জানবেন না, তবে আপনি বেশিরভাগ ক্ষেত্রেই করতে পারবেন এবং আপনি জানেন যে কোনও ধাঁধাটির জন্য কোথায় উত্তর শুরু করবেন যা আপনি উত্তরটি দেখেন নি।
StuperUser

উত্তর:


7

আমি মনে করি উইকিপিডিয়া নিবন্ধের শুরু সম্ভবত একটি ভাল শুরু:

A design pattern is a general reusable solution to a commonly occurring problem.

বা আপনি কি সেই নির্দিষ্ট নিদর্শনগুলির সুনির্দিষ্ট ব্যাখ্যা করতে চান?


সুনির্দিষ্ট সন্ধান করুন
গিজগোক ২ '


2
@ গিজগোক: "স্পেসিফিকেশন"? যে হাস্যকর. বিস্তারিত - নির্দিষ্ট করে - আরও সম্ভবত আপনি কী চাইতে পারেন। "নির্দিষ্টকরণ" চাওয়া অস্পষ্ট।
এসলট

5

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

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


1
কোজ 10 বছরের
বৃদ্ধরা

2

নকশার নিদর্শনগুলি বিদ্যমান কারণ কিছু লোক বুঝতে পেরেছিল যে সফটওয়্যারগুলির বিটগুলি একসাথে ভালভাবে কাজ করার উপায় রয়েছে এবং তারা তাদের অন্তর্দৃষ্টিগুলি ভাগ করতে চেয়েছিল।

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

বা শ্রোতাদের কল্পনা করুন, যেখানে ঘরের সামনের কেউ হাত বাড়িয়ে লোকদের জন্য নজর রাখে, তারপরে প্রশ্নটি পুনরাবৃত্তি করে যাতে অন্য প্রত্যেকে শুনতে পায়, বা সম্ভবত এর উত্তর দিয়ে প্রতিক্রিয়া জানায়। এটি কোনও সাবজেক্ট / অবজারভার প্যাটার্নের মতো হবে।

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

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


1

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


1

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


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

@ পেমদাস: উদাহরণস্বরূপ কারখানাটি গ্রহণ করুন। এটি ওওপি-র বাইরে কী বোঝায়?
15

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

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

0

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

ঘরের চারদিকে চলমান জিনিসগুলি নিয়ে আলোচনা করুন। দরজার সামনে একটি চেয়ার রাখুন। উইন্ডোজ বা দরজা অন্য কোথাও সরিয়ে নেওয়া কি বোধগম্য হবে? কেন অথবা কেন নয়?

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

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


0

ডিজাইনের নিদর্শনগুলি হ'ল সফটওয়্যার বিকাশ হ'ল জিগগুলি কাঠের কাজগুলিতে কী। এটি এমন একটি সরঞ্জাম যার সাহায্যে আপনি বড় প্রকল্পগুলিতে ব্যবহার করতে সুপরিচিত 'কাট' করতে পারেন।

দ্রষ্টব্য, কাটাটি তৈরি করতে আপনার জিগের দরকার নেই , এটি কিছু পরিস্থিতিতে কেবল সহজ।


0

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

একক বস্তু

এই প্যাটার্নটি ব্যবহৃত হয় যখন আমরা গ্যারান্টি দিতে চাই যে কোনও কিছুর মধ্যে একটিই আছে। অন্যকে আমাদের অবজেক্ট তৈরি করতে বাধা দিয়ে প্যাটার্নটি সম্পন্ন করা হয়েছে।

উইকিপিডিয়া

MVC

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

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

উইকিপিডিয়া

কারখানা

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

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


0

10 বছর বয়সী যিনি হ্যাকার হতে চান - আমি বলব।

কল্পনা করুন যে আপনি যখন হ্যাক করছেন তখন আপনার পাশে বসে বিশ্বের সেরা হ্যাকারদের কিছু থাকতে পারে .. এবং এখনই এবং তারা বলত .. "আপনি যদি জানেন যে আপনি এটি এমনভাবে করেন ... [sertোকান প্যাটার্ন] ... তারপরে আপনার কোডটি [দ্রুত / নিরাপদ / আরও রক্ষণাবেক্ষণযোগ্য / ইত্যাদি] "এটি কত শীতল হবে।

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

তবে বেশিরভাগ ক্ষেত্রে তাঁর পরামর্শদাতার মাধ্যমে সেগুলি শিখতে হবে।

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