নন-ওওপি ডিজাইনের প্যাটার্নগুলি? [বন্ধ]


70

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

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

এগুলি কিছু প্রোগ্রামিং ভাষার (ভাষা) বর্ণের ক্ষেত্রে নির্দিষ্ট হতে পারে তবে সাধারণ (প্যারাডিজম-স্তর) নিদর্শনগুলি বিষয়বস্তু ভিত্তিক তুলনায় অন্যান্য দৃষ্টান্তগুলির চেয়ে বেশি পছন্দ করা হয়।


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

14
ঠিক আছে, অবজেক্টগুলি
হ'ল

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

উত্তর:


25

তারা যদিও অবজেক্ট-ভিত্তিক পদ্ধতির ব্যবহার করছে।
কাইস

12

আসলে এটি প্যারাডক্স - সর্বাধিক জনপ্রিয় নন-ওও নিদর্শনগুলির মধ্যে একটি ... "ক্লাস"।

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

তবে আমার পরামর্শটি নিন: সাধারণ ভুল করবেন না - নিদর্শনগুলি কেবল শীতল হওয়ার কারণে ব্যবহার করবেন না, প্যাটার্নের ব্যবহারকে ন্যায্য প্রমাণ করার জন্য আপনার গুরুতর কারণ প্রয়োজন (কমপক্ষে ওও)।

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


11

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

এর অর্থ আপনি যে কোনও জায়গায় নকশার ধরণগুলি খুঁজে পেতে পারেন। প্রকৃতপক্ষে প্রতিটি "সেরা অনুশীলন" একটি ডিজাইনের প্যাটার্নের একটি সাধারণ রূপ হিসাবে বিবেচনা করা যেতে পারে।


9
একমত! পল গ্রাহামের কাছ থেকে : "উদাহরণস্বরূপ, ওও বিশ্বে আপনি" নিদর্শন "সম্পর্কে খুব ভাল কথা শুনেন। [...] আমি যখন আমার প্রোগ্রামগুলিতে নিদর্শনগুলি দেখি, তখন আমি এটিকে সমস্যার চিহ্ন হিসাবে বিবেচনা করি a কোনও প্রোগ্রামের আকারটি প্রতিবিম্বিত হওয়া উচিত কেবলমাত্র এটির সমস্যাটিই সমাধান করা দরকার the কোডটিতে অন্য কোনও নিয়মিততা হ'ল একটি চিহ্ন, আমি কমপক্ষে, যে আমি যথেষ্ট ক্ষমতাশালী নয় এমন বিমূর্ততা ব্যবহার করছি - প্রায়শই আমি হাতে হাতে কিছু ম্যাক্রোর বিস্তৃতি তৈরি করছি that যে আমার লিখতে হবে। "
আন্দ্রেস এফ 14

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

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

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

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

10

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

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



7

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

আশাকরি এটা সাহায্য করবে


এগুলি হ'ল আমিও সুপারিশ করব প্লাস হহপে ও উলফের এন্টারপ্রাইজ ইন্টিগ্রেশন প্যাটার্নগুলি
টিএমএন

ফওলারের নিদর্শনগুলি অত্যন্ত ওও :)
ডেভিড কনডে

@ ডেভিড কনডে :) তাদের বেশিরভাগই খাঁটি ওও, এগুলির সবগুলি একটি ওও উপায়ে লেখা হয়, তবে তাদের মধ্যে কিছুগুলি ও ও-র ক্ষেত্রেও প্রযোজ্য: "ওয়েব উপস্থাপনার ধরণগুলি", "সেশন রাষ্ট্রের ধরণগুলি", "বিতরণ নিদর্শনগুলি দেখুন "
কেজডিজ্ক

2

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


1

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


: জাতীয় & "বিশুদ্ধ সি" ব্যবহৃত en.wikipedia.org/wiki/Module_pattern
umlcat

1

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


0

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

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