দীর্ঘ প্রশ্নের জন্য আমি ক্ষমাপ্রার্থনা করি, এটি কিছুটা ভাড়া বলে কিছুটা পড়ে, কিন্তু আমি প্রতিশ্রুতি দিচ্ছি না! আমি নীচে আমার প্রশ্ন (গুলি) সংক্ষিপ্ত করেছি
এমভিসি বিশ্বে জিনিসগুলি সোজা are মডেল রাষ্ট্র, দৃশ্য আছে শো মডেল এবং কন্ট্রোলার আছে মডেল (মূলত) সঙ্গে / থেকে স্টাফ, একটি নিয়ামক কোন রাষ্ট্র হয়েছে। করতে না কাপড় কন্ট্রোলার ওয়েব সার্ভিস, সংগ্রহালয় অনেক কিছু নির্ভরতা হয়েছে। আপনি যখন কোনও নিয়ামক ইনস্ট্যান্ট করেন তখন আপনি সেই নির্ভরতাগুলি সরবরাহ করার বিষয়ে যত্নশীল হন, অন্য কিছুই নয়। আপনি যখন কোনও ক্রিয়া সম্পাদন করেন (নিয়ন্ত্রণকারীর উপর পদ্ধতি), আপনি সেই নির্ভরতাগুলি মডেলটি পুনরুদ্ধার বা আপডেট করতে বা অন্য কোনও ডোমেন পরিষেবা কল করার জন্য ব্যবহার করেন। যদি কোনও প্রসঙ্গ থাকে তবে বলুন যে কোনও ব্যবহারকারী কোনও নির্দিষ্ট আইটেমের বিশদ দেখতে চান, আপনি সেই আইটেমটির আইডিটি অ্যাকশনের পরামিতি হিসাবে পাস করেন pass কন্ট্রোলারের কোথাও কোনও রাজ্যের কোনও রেফারেন্স নেই। এ পর্যন্ত সব ঠিকই.
এমভিভিএম প্রবেশ করান। আমি ডাব্লুপিএফকে ভালবাসি, আমি ডেটা বাঁধাই পছন্দ করি। আমি ফ্রেমওয়ার্কগুলি পছন্দ করি যা ভিউমোডেলগুলিতে ডেটা বাধ্যতামূলক করে তোলে (ক্যালিবার্ন মাইক্রো এটিএম ব্যবহার করে)। আমি মনে করি যদিও এই পৃথিবীতে জিনিসগুলি কম সোজা। আসুন ব্যায়াম আবার: মডেল রাষ্ট্র, দৃশ্য আছে শো ViewModel এবং ViewModel করে মডেল (মূলত) সঙ্গে / থেকে কাপড়, একটি ViewModel করে রাষ্ট্র আছে! (নির্মল; হয়তো এটা এক বা একাধিক মডেলের প্রতিনিধিদের সব সম্পত্তি, কিন্তু তার মানে এটা মডেল একটি উপায় বা অন্য, যা নিজেই রাষ্ট্র একটি রেফারেন্স থাকতে হবে) করতে নাস্টাফ ভিউমোডেলের ওয়েব পরিষেবাদি, সংগ্রহস্থল, লটের উপর কিছুটা নির্ভরশীলতা রয়েছে। যখন আপনি একটি ভিউমোডেল ইনস্ট্যান্ট করেন তখন আপনি সেই নির্ভরতা সরবরাহের বিষয়ে যত্নশীল হন, তবে রাষ্ট্রটিও। এবং এই মহিলারা এবং ভদ্রলোক, আমাকে শেষ পর্যন্ত বিরক্ত করে।
যখনই আপনি instantiate প্রয়োজন ProductDetailsViewModel
থেকে ProductSearchViewModel
(যার থেকে আপনি নামক ProductSearchWebService
ঘুরে ফিরে যা IEnumerable<ProductDTO>
, আপনি এই জিনিস এক করতে পারি? আমার সাথে এখনও সবাই):
- কল করুন
new ProductDetailsViewModel(productDTO, _shoppingCartWebService /* dependcy */);
, এটি খারাপ, আরও ৩ টি নির্ভরতা কল্পনা করুন, এর অর্থProductSearchViewModel
সেই depend নির্ভরতাগুলিও গ্রহণ করা দরকার। কনস্ট্রাক্টর পরিবর্তন করাও বেদনাদায়ক। - কল করুন
_myInjectedProductDetailsViewModelFactory.Create().Initialize(productDTO);
, কারখানাটি কেবল একটি ফানক, এগুলি বেশিরভাগ আইওসি ফ্রেমওয়ার্ক দ্বারা সহজেই উত্পাদিত হয়। আমি এটি খারাপ বলে মনে করি কারণ ইনটি পদ্ধতিগুলি একটি ফাঁস বিমূর্ততা। আপনি দীক্ষা পদ্ধতিতে সেট করা ক্ষেত্রগুলির জন্য পঠনযোগ্য কীওয়ার্ডটিও ব্যবহার করতে পারবেন না। আমি নিশ্চিত যে আরও কয়েকটি কারণ রয়েছে। - কল
_myInjectedProductDetailsViewModelAbstractFactory.Create(productDTO);
তাই ... এটি হ'ল ধাঁচের (বিমূর্ত কারখানা) যা সাধারণত এই ধরণের সমস্যার জন্য সুপারিশ করা হয়। আমি যদিও এটি প্রতিভা ছিলাম যেহেতু এটি স্থির টাইপিংয়ের জন্য আমার তুচ্ছতাকে সন্তুষ্ট করে, যতক্ষণ না আমি আসলে এটি ব্যবহার শুরু করি। বয়লারপ্লেট কোডের পরিমাণটি আমি খুব বেশি ভাবি (আপনি জানেন, আমি যে হাস্যকর পরিবর্তনশীল নামগুলি ব্যবহার করি তা বাদ দিয়ে)। প্রতিটি ভিউমোডেলের জন্য যা রানটাইম প্যারামিটারগুলির প্রয়োজন তার জন্য আপনি দুটি অতিরিক্ত ফাইল (ফ্যাক্টরি ইন্টারফেস এবং বাস্তবায়ন) পাবেন এবং আপনাকে 4 অতিরিক্ত বারের মতো রান-টাইম নির্ভরতা টাইপ করতে হবে। এবং প্রতিটি সময় নির্ভরতা পরিবর্তিত হয়, আপনি এটি কারখানায়ও পরিবর্তন করতে পারবেন। দেখে মনে হচ্ছে আমি আর ডিআই কনটেইনার ব্যবহার করি না। (আমি মনে করি ক্যাসেল উইন্ডসর এর এর জন্য এক ধরণের সমাধান রয়েছে [এর নিজস্ব ত্রুটিগুলি নিয়ে, আমি ভুল হলে আমাকে সংশোধন করব]))। - বেনামে টাইপ বা অভিধান দিয়ে কিছু করুন। আমি আমার স্ট্যাটিক টাইপিং পছন্দ করি।
তাই হ্যা. রাষ্ট্র এবং আচরণকে এইভাবে মিশ্রিত করে এমন একটি সমস্যা তৈরি করে যা এমভিসিতে মোটেই বিদ্যমান নয়। এবং আমি মনে করি যে এই সমস্যাটির জন্য বর্তমানে কোনও যথাযথ সমাধান নেই। এখন আমি কিছু জিনিস পর্যবেক্ষণ করতে চাই:
- লোকেরা আসলে এমভিভিএম ব্যবহার করে। সুতরাং তারা হয় উপরোক্ত সমস্ত বিষয়ে চিন্তা করে না, বা তাদের কিছু উজ্জ্বল অন্যান্য সমাধান রয়েছে।
- আমি ডাব্লুপিএফ সহ এমভিভিএমের গভীরতার উদাহরণ পাই না। উদাহরণস্বরূপ, এনডিডিডি-নমুনা প্রকল্প আমাকে কিছু ডিডিডি ধারণাটি বুঝতে সহায়তা করেছে। কেউ যদি আমাকে এমভিভিএম / ডাব্লুপিএফ-এর অনুরূপ কিছুটির দিকে নির্দেশ করতে পারে তবে আমি সত্যিই এটি পছন্দ করব।
- হয়তো আমি এমভিভিএম সমস্ত ভুল করছি এবং আমার নকশাটি উল্টে ফেলা উচিত। আমার এই সমস্যাটি মোটেই উচিত হবে না। আমি জানি যে অন্যান্য ব্যক্তিরাও একই প্রশ্ন জিজ্ঞাসা করেছেন তাই আমি মনে করি আমিই একমাত্র নই।
সংক্ষেপ
- আমি কি এই সিদ্ধান্তে পৌঁছতে পারি যে ভিউমোডেল রাষ্ট্র এবং আচরণ উভয়ের জন্যই একীকরণের বিন্দু হ'ল সামগ্রিকভাবে এমভিভিএম প্যাটার্নের সাথে কিছু অসুবিধার কারণ?
- স্থিতিশীলভাবে কোনও ভিউমোডেল ইনস্ট্যান্ট করার জন্য কি অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্নটি একমাত্র / সর্বোত্তম উপায়?
- গভীরতার রেফারেন্স বাস্তবায়নের মতো কিছু আছে কি?
- উভয় স্টেট / আচরণের সাথে ভিউমোডেলগুলি কী কোনও ডিজাইনের গন্ধযুক্ত?