এমভিসি হ'ল একটি ইউআই আর্কিটেকচার কনসার্নস বিভাজনের একটি অনুশীলন । উপস্থাপনাটি সামগ্রী থেকে পৃথক না হওয়ার কারণে ব্যবহারকারীর ইন্টারফেসে ঘটতে পারে এমন জটিলতা সংশোধন করার এটি একটি উপায় ।
তত্ত্ব অনুসারে, সমস্ত বস্তুর এমন আচরণ থাকতে পারে যা তাদের ধারণ করা ডেটাতে পরিচালনা করে এবং সেই ডেটা এবং আচরণ আবদ্ধ থাকে । অনুশীলনে, একটি প্রদত্ত ওওপি অবজেক্টে যুক্তি থাকতে পারে যা তার ডেটার সাথে মিলে যায় বা থাকতে পারে না কোনও যুক্তি থাকতে পারে না ( উদাহরণস্বরূপ একটি ডেটা ট্রান্সফার অবজেক্ট ))
এমভিসি-তে, ব্যবসায়ের যুক্তি নিয়ামক নয়, মডেলটিতে চলে। নিয়ন্ত্রণ এবং দৃশ্য এবং মডেলটিকে একসাথে আটকানোর জন্য কেবলমাত্র মধ্যস্থতা। সুতরাং মডেলটিতে, আপনার একই জায়গায় ডেটা এবং আচরণ থাকতে পারে।
তবে এমনকি সেই ব্যবস্থাটি কঠোর ডেটা / আচরণের সংমিশ্রণের নিশ্চয়তা দেয় না। কেবলমাত্র ডেটাযুক্ত অবজেক্টগুলিতে কেবল যুক্তিযুক্ত অন্যান্য শ্রেণি দ্বারা পরিচালনা করা যেতে পারে এবং এটি ওওপি-র একটি সম্পূর্ণরূপে গ্রহণযোগ্য ব্যবহার।
আমি একটি নির্দিষ্ট উদাহরণ দেব। এটি কিছুটা স্বীকৃত, তবে ধরা যাক আপনার একটি Currency
অবজেক্ট রয়েছে এবং সেই বস্তুর ডলারের সাথে যুক্ত, যে কোনও উপলব্ধ মুদ্রায় নিজেকে উপস্থাপন করার ক্ষমতা রয়েছে। সুতরাং আপনার মত পদ্ধতি থাকতে হবে:
public decimal Yen { get { return // dollars to yen; } }
public decimal Sterling { get { return // dollars to sterling; } }
public decimal Euro { get { return // dollars to euro; } }
... এবং সেই আচরণ মুদ্রা অবজেক্টের সাথে আবদ্ধ হবে।
তবে আমি যদি মুদ্রাটি এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে স্থানান্তর করতে বা কিছু মুদ্রা জমা করতে চাইতাম? সেই আচরণটি কি মুদ্রা অবজেক্টেও আবদ্ধ হবে? না, এটা হবে না। আপনার মানিব্যাগের অর্থ আপনার মানিব্যাগের বাইরে থেকে নিজেকে আপনার অ্যাকাউন্টে স্থানান্তর করতে পারে না; এই অ্যাকাউন্টটি আপনার অ্যাকাউন্টে আনতে সহায়তা করার জন্য আপনার এক বা একাধিক এজেন্ট (একজন টেলার বা এটিএম) দরকার।
সুতরাং আচরণটি কোনও Teller
বস্তুর মধ্যে আবদ্ধ হয়ে যায় এবং এটি গ্রহণ করে Currency
এবং Account
ইনপুট হিসাবে বস্তুগুলি গ্রহণ Transaction
করে তবে ইনপুট অবজেক্টগুলিকে প্রক্রিয়া করতে সহায়তা করার জন্য কিছুটা স্থানীয় রাজ্য (বা হতে পারে কোনও বস্তু) ব্যতীত এটি কোনও তথ্য নিজেই ধারণ করে না ।