নকশা নিদর্শন এবং স্থাপত্য নিদর্শন মধ্যে পার্থক্য কি?


119

আমরা যখন ইন্টারনেটে ডিজাইনের ধরণগুলি পড়ি তখন আমরা নোট করি যে এখানে 3 টি বিভাগ রয়েছে:

  • Creational
  • কাঠামোগত
  • ব্যবহারিক

তবে যখন আমরা কোনও সফ্টওয়্যারটির আর্কিটেকচার তৈরি করি, তখন আমরা এমভিপি, এমভিসি বা এমভিভিএম সম্পর্কে চিন্তা করি।

উদাহরণস্বরূপ, সৃষ্টিশীল নিদর্শনগুলির মধ্যে আমি সিঙ্গলটন প্যাটার্নটি পেয়েছি , তবে আমি আমার এমপিভিতে সিঙ্গলটনও ব্যবহার করেছি।

সুতরাং আমার প্রশ্নটি: কোনও ডিজাইনের প্যাটার্ন কি কোনও পণ্যের সমস্ত কাঠামোর চেয়ে বেশি?

  • যদি হ্যাঁ, তবে সিঙ্গলটন ডিজাইনের ধরণ কীভাবে হতে পারে? কারণ আমি এটি আমার প্রয়োগের যে কোনও জায়গায় ব্যবহার করতে পারি। মূলত, এটি কেবল স্মৃতিতে একবারে একটি উদাহরণ তৈরি করার জন্য সীমাবদ্ধ, তবে এই ধারণাটি কীভাবে সফ্টওয়্যার ডিজাইন করা হয়েছে তা সংজ্ঞায়িত করে না?

  • যদি তা না হয় তবে তিনটি বিভাগে এমভিপি, এমভিসি এবং এমভিভিএম কোথায় রয়েছে? এবং সফ্টওয়্যারটির নকশা এবং আর্কিটেকচারের মধ্যে পার্থক্য কী?


ইতিমধ্যে আলোচিত: stackoverflow.com/a/46419722/3649347
আমাকে বলুন

2
ডিজাইনের প্যাটার্ন এবং আর্কিটেকচারাল প্যাটার্ন রিসোর্সের এই তালিকাটি দেখুন github.com/DovAmir/awesome- ডিজাইন-
dov.amir

উত্তর:


174

এটির একটি বিশদ ব্যাখ্যা প্রয়োজন তবে আমি পার্থক্যগুলি আমার জ্ঞানের সর্বোত্তম হিসাবে স্কেচ করার চেষ্টা করব।

প্যাটার্নগুলি ডিস্টিল করা সাধারণতা যা আপনি প্রোগ্রামগুলিতে সন্ধান করেন। এটি আমাদের একটি বৃহত জটিল কাঠামোটি ডিকনস্ট্রাক্ট করতে এবং সাধারণ অংশগুলি ব্যবহার করে তৈরি করতে সহায়তা করে। এটি এক শ্রেণির সমস্যার জন্য একটি সাধারণ সমাধান সরবরাহ করে।

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

একটি নিদর্শন খুব বিভিন্ন স্তরে ঘটতে পারে। ফ্র্যাক্টাল দেখুন । দ্রুত সাজান, মার্জ সাজান হ'ল একটি ক্রমে উপাদানগুলির একটি গ্রুপ সংগঠিত করার জন্য সমস্ত অ্যালগরিদমিক নিদর্শন।

সাদামাটা দেখার জন্য:

  • প্রোগ্রামিং উপমা - প্রোগ্রামিং ভাষার নির্দিষ্ট
  • নকশার নিদর্শন - সফ্টওয়্যার নির্মাণে পুনরায় সমস্যা সমাধান করে
  • স্থাপত্য নিদর্শন - সফ্টওয়্যার সিস্টেমের জন্য মৌলিক কাঠামোগত সংগঠন

আইডিয়ামগুলি হ'ল দৃষ্টান্ত-নির্দিষ্ট এবং ভাষা-নির্দিষ্ট প্রোগ্রামিং কৌশলগুলি যা নিম্ন-স্তরের বিশদগুলি পূরণ করে।

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

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

নিদর্শনগুলি কীভাবে প্রাপ্ত হয়? মাধ্যম:

  1. পুনরায় ব্যবহার,
  2. শ্রেণীবিন্যাস
  3. এবং অবশেষে বিমূর্ততা সাধারণতা ছাঁটাই।

যদি আপনি উপরোক্ত চিন্তাগুলি অনুসরণ করেন followed আপনি দেখতে পাবেন যে সিঙ্গেলটন হ'ল "নকশার ধরণ" এবং এমভিসি উদ্বেগের বিভাজন মোকাবেলায় "আর্কিটেকচারাল" প্যাটার্নগুলির মধ্যে একটি।

পড়ার চেষ্টা করুন:

  1. http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern

14
খুব ভাল কাজ করেছেন এবং বিশদভাবে বর্ণনা করেছেন। এখন আমি কেবল এই কামনা করেছি যে আপনি এখানে যেমন রেখেছেন তেমন শর্তগুলি আলাদাভাবে ব্যবহার করবে everybody আমাদের বিপণন বিভাগের কফি বিতরণকারীর উপরে দেওয়ালে আমি আপনার উত্তরটির একটি মুদ্রণ পিন করতে পারি। তারা একদিন বুঝতে পারে। ;-)
ofi

@ ফাই: ধন্যবাদ! ভাষা নির্মাণের ব্যবহার উভয়ই আমাদের বিভ্রান্ত করতে এবং আমাদের গাইড করতে পারে। এটি এমন একটি বিষয় যা আমি বেশ শক্তিশালী বলে মনে করি।
পাইফুঙ্ক

সাক্ষাত্কারের প্রশ্নগুলি থেকে আমাদের
বাঁচানোর

ভাল উত্তর, ধন্যবাদ !! @ অফি যেমন বলেছিল, আমি এটি মুদ্রণ করব এবং ডিজাইন দলের প্রাচীরে পিন করব।
রোল করুন

11

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

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


1

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

আরও তথ্যের জন্য: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design- Patterns


0

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


0

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

How to instantiate an object when we only know what type needs to be instantiated at run time (maybe a Factory Class?)
How to make an object behave differently according to its state (maybe a state machine, or a Strategy Pattern?)

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

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