প্যাটার্ন এবং নীতি মধ্যে পার্থক্য


20

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

নকশার নীতি = সলিড (অর্থাত্ নির্ভরতা বিপরীতমুখী মূলনীতি)

নকশার প্যাটার্ন = গোফ (যেমন বিমূর্ত কারখানার প্যাটার্ন)

উত্তর:


24

না, তারা এক নয়।

প্যাটার্নস সাধারণ সমাধান আছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সমস্যার । (ক্রিয়ামূলক বা ঘোষণামূলক প্রোগ্রামিংয়ের জন্য আমি একই ধরণের কোনও বই সম্পর্কে অবগত নই।) 1995 সালে গ্যাং অফ ফোরের বিখ্যাত "ডিজাইন প্যাটার্নস" বইয়ে এই ধারণাটি স্ফটিকিত হয়েছিল।

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

নীতিগুলি নির্দিষ্ট ভাষা বা দৃষ্টান্ত সম্পর্কে কম, আরও সাধারণ। "নিজেকে পুনরাবৃত্তি করবেন না" - DRY নীতি - সমস্ত প্রোগ্রামিংয়ের ক্ষেত্রে এটি সত্য true


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

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

@ ইজকাটা নন-
রক মার্টে

19

এই ধারণাগুলি এক নয়:

* ডিজাইনের নীতি: * সফ্টওয়্যার ডিজাইনের নীতিগুলি এমন একটি নির্দেশিকাগুলির একটি সেট উপস্থাপন করে যা আমাদের খারাপ ডিজাইন করা এড়াতে সহায়তা করে। মত: ওপেন ক্লোজ নীতি

* ডিজাইনের প্যাটার্ন: * ডিজাইন প্যাটার্ন হ'ল সফ্টওয়্যার ডিজাইনের একটি নির্দিষ্ট প্রসঙ্গে একটি সাধারণ পুনরায় ব্যবহারযোগ্য সমাধান। লাইক: সিঙ্গলটন


7

নিদর্শনগুলি নীতিগুলির মধ্যে রয়েছে, প্রয়োগগুলি নিদর্শনগুলিতে কী।

একটি নীতি হবে "ইন্ডিয়ারেশন", যা "ফ্যাক্টরি" প্যাটার্ন দ্বারা সম্পন্ন হতে পারে, যা শেষ পর্যন্ত কারখানার পদ্ধতি সহ শ্রেণি হিসাবে প্রয়োগ করা হয়।


3

ঠিক আছে, নীতিগুলি হ'ল বিধিগুলি যখন নিদর্শনগুলি তাদের দৃ concrete় উদাহরণ।


1
আপনি কিছু উদাহরণ দিতে পারেন?

ফ্যাক্টরি বা চেইন অফ রেসপন্সিবিলিটি বা ফ্লাইওয়েটের জন্য যে নীতি কল করে তা দয়া করে আমাদের জানান।
ডাফাইমো

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

3

সূত্রগুলি নীতিগুলির চেয়ে বেশি উচ্চ-স্তরের জিনিস। প্যাটার্নগুলি নির্দিষ্ট সমস্যাগুলি সমাধান করে। নীতিগুলি প্রসঙ্গ নির্বিশেষে যে কোনও জায়গায় প্রয়োগ করা যেতে পারে। মূলত নীতির উপর ভিত্তি করে নিদর্শন (এসআরপি, ডিআরওয়াই, ইত্যাদি)

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

  • এসআরপি - আপনি কোডটি সংজ্ঞায়িত করেন যা অ্যালগরিদমের জন্য দায়ী এবং এটি অন্য কোড থেকে বের করে ract
  • ওসিপি - আপনি বিমূর্ততা সংজ্ঞায়িত করেন, যা সমস্ত বিভিন্ন অ্যালগোরিদমকে উপস্থাপন করে এবং এটি ব্যবহার করে
  • এলএসপি - আপনি ক্লায়েন্ট কোডে কংক্রিট অ্যালগরিদম ক্লাস ব্যবহার করবেন না, কেবল বিমূর্ততা

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

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

4
আপনি এর দ্বারা কী বোঝাতে চেয়েছিলেন তা দেখতে এবং বিষয়টি সম্পর্কে আপনার চিন্তাভাবনা বুঝতে পারি। এটি সফ্টওয়্যার প্রসঙ্গে "উচ্চ স্তর" এবং "নিম্ন স্তরের" ধারণার সাধারণ অর্থের পরিপন্থী। (কিছু কারণে আমি তোমাকে -tag না @ পারেন।)

1
"নীতিগুলি তুলনায় প্যাটার্নগুলি আরও উচ্চ-স্তরের জিনিস"। আমি আলাদা করতে অনুরোধ করি ==> একটি প্যাটার্ন উপলব্ধির (যেমন নিম্ন স্তরের) কাছাকাছি, যখন একটি নীতি উচ্চ স্তরের নিয়ম।
রাউল

2

নিদর্শন যেখানে আর্কিটেকচারের জন্য মূলত নথিভুক্ত। আর্কিটেকচারে কোনও ঘরে দরজা বসানো থেকে শুরু করে কোনও গ্রামের বিন্যাস পর্যন্ত জিনিসগুলিতে প্রয়োগ করুন।

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

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

বিবেচনা

  • আপনাকে প্রোগ্রামটি বিকাশের একমাত্র পদ্ধতির হিসাবে অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্নের মতো প্যাটার্নটি ব্যবহার করার জন্য অনুরোধ করা হয়েছে। এটি কি উপযুক্ত হবে? না, তবে এটি সম্ভবত একটি প্যাটার্ন।
  • আপনাকে সমস্ত উপাদানগুলিতে DRY প্রয়োগ করার জন্য অনুরোধ করা হয়েছে? এটি কি উপযুক্ত হবে? হ্যাঁ, তবে এটি নীতিগত হওয়ার সম্ভাবনা বেশি।

1

ওও ডিজাইনের নীতি

ওও নীতি হ'ল গাইডলাইনগুলির একটি সেট যা ওওপি ধারণাটি নিশ্চিত করে। ওওপি ধারণার উপর ভিত্তি করে, এটি আরও ভাল উপায়ে, আরও ভাল ডিজাইন করার উপায়গুলি সংজ্ঞায়িত করে। বেসিক ওও ডিজাইনের নীতিটি হ'ল সলিড।

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

বিস্তারিত ব্যাখ্যার জন্য লিঙ্কটি নীচে দেওয়া হল। http://techythought.wordpress.com/2013/01/21/design-principle-vs-ds-design-pattern-describing-oop-elements/

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