এমভিসিতে, মডেল থেকে প্রাথমিক তথ্য পুনরুদ্ধার ভিউতে করা উচিত?


10

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

নিয়ামক

<?php

class Invoice extends Base_Controller {

    /**
     * Get all the invoices for this month
     */

    public function current_month() {

        // as there's no user input let's keep the controller very skinny,
        // DON'T get data from the Model here, just load the view

        $this->load->view('invoice/current_month');

    }

}

দৃশ্য

<?php

// directly retrieve current month invoices here

$invoices = $this->invoice_model->get_current_month();

// get some other display-only data, e.g. a list of users for a separate list somewhere on the page

$users = $this->user_model->get_users();

?>

<h1>This month's invoices</h1>

<ul>
<?php foreach ($invoices as $invoice) { ?>

<li><?php echo $invoice['ref']; ?></li>

<?php } ?>
</ul>

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

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

এটি কি এমভিসি অ্যাপ্লিকেশন বিকাশের জন্য একটি বৈধ পন্থা? বা আমি একজন নিয়ামকের যে ভূমিকা পালন করতে হবে তার একটি গুরুত্বপূর্ণ অংশটি উপেক্ষা করছি?

উত্তর:


17

হ্যাঁ, এটি প্রযুক্তিগতভাবে করা যেতে পারে। না, এটি করা উচিত নয়। এবং হ্যাঁ, আপনি যে নিয়ামকটির জন্য রয়েছেন তার কিছুটা মিস করছেন।

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

আপনার মডেলটি যুক্ত করতে বা পরিবর্তন করতে হলে এটি বিপরীতেও কাজ করে। প্রবাহের সমস্ত পরিবর্তনগুলি কন্ট্রোলারের মধ্যে থাকবে এবং আপনার দর্শনগুলি একা থাকবে।

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


1
দুর্দান্ত উত্তর, আপনাকে ধন্যবাদ। আপনার 'সামনের দিকে তাকাতে' দৃশ্যের সামান্য পরিমাণ বাড়ানো; যদি কোন পৃষ্ঠায় সাধারণ তথ্য থাকে যা অনুরোধ করা হয় তার চেয়ে আলাদা (যেমন ব্যবহারকারী কোনও নির্দিষ্ট পণ্য দেখছেন, 'সর্বশেষ বিশেষ অফারগুলির একটি সাধারণ তালিকা পাশের দিকে দেখানো হয়েছে) কীভাবে / কোথায় কল করা উচিত offers_model->get_latest()? নিয়ামকটির প্রতিটি পদ্ধতিতে এটি যুক্ত করা (যেমন আমি আগে বোকামি দিয়ে চেষ্টা করেছি) ওভারকিলের মতো এবং স্পষ্টতই অ-ডিআরওয়ির মতো মনে হয়।
অ্যাডাম ওয়েস্টব্রুক

2
@ অ্যাডাম ওয়েস্টব্রুক এমভিভিএম একবার দেখুন এর ভিউমোডেল অংশটি এই নির্দিষ্ট সমস্যাটির সমাধান করতে পারে। আপনি offers_model->get_latest()একটি ProductViewModelবেস বর্গ বা অনুরূপ কিছু যোগ করতে পারেন ।
জাচারি ইয়েটস

1
দুর্দান্ত, আমি অবশ্যই এমভিভিএম সন্ধান করব, আবারও ধন্যবাদ।
অ্যাডাম ওয়েস্টব্রুক

খুব ভাল উত্তর, তীব্রভাবে এই তারকাচিহ্নিত করা হবে। ব্যক্তিগতভাবে আমিও এমভিভিএম এর খুব বড় অনুরাগী :)
বেনজামিন গ্রুইনবাউম

আপনি কি পিএইচপি তে এমভিভিএম ব্যবহার করছেন? যদি তাই হয় তবে আপনি কি এর জন্য কোনও নির্দিষ্ট কাঠামো ব্যবহার করছেন?
অ্যাডাম ওয়েস্টব্রুক

6

'চর্মসার নিয়ন্ত্রক, চর্বিযুক্ত মডেল' ধারণা এবং আউটপুট জন্য ডেটা প্রয়োজন হয় যখন ভিউ সরাসরি মডেল কল করতে পারেন যে সাধারণ গ্রহণযোগ্যতা দেওয়া

না এটি সঠিক নয়। দেখুন মডেলগুলিতে সরাসরি কল করতে পারবেন না। মডেল অবজেক্টগুলিতে ভিউয়ের অ্যাক্সেস থাকা উচিত নয়, যদি না কোনও কারণে প্রোগ্রামার সেই সমস্ত বস্তুকে ভিউতে প্রকাশ না করে।

নিয়ন্ত্রণের দ্বারা নয় এমন কোনও ব্যক্তির ভিউগুলির মধ্যে অনুরোধের অংশগুলি 'পান এবং প্রদর্শন' পরিচালনা করার বিষয়টি বিবেচনা করা উচিত?

এটি মূলত কন্ট্রোলারটিকে মুছে ফেলে এবং সেগুলি রাখার বিন্দুটিকে পরাস্ত করে।

কন্ট্রোলারকে কেন কেবল তথ্যটি পুনরুদ্ধার করতে পারে তা ভিউতে ডেটা সংগ্রহ এবং প্রেরণ করা উচিত?

কন্ট্রোলার ডেটা সংগ্রহ করে না। মডেল তথ্য সংগ্রহ করে। এই ডেটা ভিউতে প্রেরণ করা উচিত কিনা তা নিয়ন্ত্রণকারী সিদ্ধান্ত নেয় । ভিউ কেবল উপাত্তের উপস্থাপনা করে।

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

না।

কন্ট্রোলার পোষ্টড ডেটা বৈধ কিনা তা পরীক্ষা করে, এটি তারপরে এই ডেটাটিকে মডেল হিসাবে বিকল্প হিসাবে প্রেরণ করে, যা ডেটাসোর্সকে জিজ্ঞাসা করবে এবং ডেটা ফিরিয়ে দেবে, এবং কন্ট্রোলার সেটি ভিউতে পাস করে।

এটি কি এমভিসি অ্যাপ্লিকেশন বিকাশের জন্য একটি বৈধ পন্থা? বা আমি একজন নিয়ামকের যে ভূমিকা পালন করতে হবে তার একটি গুরুত্বপূর্ণ অংশটি উপেক্ষা করছি?

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

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

আমি নিশ্চিত এমভিসি তে প্রচুর টিউটোরিয়াল আছে। আমি তাদের কিছু পড়ার পরামর্শ দিই।


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

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

3

আমি আপনার প্রশ্নটি খুব আকর্ষণীয় পেয়েছি কারণ সম্প্রতি পাইথন শিখতে গিয়ে আমি একই সমস্যার মধ্যে পড়েছিলাম।

প্রদত্ত উত্তরগুলি একটি দৃinc় যুক্তি তৈরি করার সময়, আমি ভেবেছিলাম যে আমি এমন একটি অন্য মতামত যুক্ত করব যা আমি দেখতে পেলাম যা ভিউ কন্ট্রোলারের মধ্য দিয়ে না গিয়ে মডেলের রাজ্য লাভ করে।

MVC

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

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

স্মলটাক -৮০ এ অ্যাপ্লিকেশন প্রোগ্রামিংয়ে: মডেল-ভিউ-কন্ট্রোলার (এমভিসি) [বার্বেক ৯২] কীভাবে ব্যবহার করবেন, স্টিভ বারবেক এমভিসি-র দুটি প্রকারভেদ বর্ণনা করেছেন: একটি প্যাসিভ মডেল এবং একটি সক্রিয় মডেল।

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

এমভিসি - প্যাসিভ মডেল

আমি কোন মতামত "সঠিক" তা বলার মতো অবস্থানে নেই এবং সত্যি বলতে কী, আমি এখানে উত্তরগুলি এবং লিঙ্কিত নিবন্ধটি পড়ার পরে কিছুটা বিভ্রান্ত হয়ে পড়েছি।

নিবন্ধের সম্পূর্ণ পাঠ্য এখানে


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

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

1

আরেকটি বিষয় বিবেচনা করে তা হ'ল আপনি নিজেরটি অলোক্ল্যাড করেছেন user_modelএবং invoice_modelএই দৃশ্যে তাদের অ্যাক্সেসের অনুমতি দেওয়ার অনুমতি দেবে। এটি নির্ভরযোগ্যভাবে কাজ করার জন্য, আপনি সম্ভবত আপনার সমস্ত মডেলকে অটোল্যাড করেছেন (কারণ $this->load->model()কেবলমাত্র একটি দৃষ্টিতে ভুল দেখায়, তাই না ...)

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

এটি কোডইগিনিটারের মতো দেখাচ্ছে। আমি প্রচুর সিআই বিকাশ করেছি এবং আমি ব্যক্তিগত অভিজ্ঞতা থেকে ভাগ করে নিতে পারি যে আপনি সত্যিকারের চেয়ে বেশি অটলয়েড করতে চান না। $this->output->enable_profiler(TRUE);একটি কন্ট্রোলার কনস্ট্রাক্টর এবং অটোল্যাডস (যেমন সহায়ক সহ database) সহ ফিডল যুক্ত করার চেষ্টা করুন : আপনি সম্ভবত লোড এবং সম্পাদনের সময়গুলিতে বিশেষত মেমরি বরাদ্দে একটি উল্লেখযোগ্য পরিবর্তন দেখতে পাবেন ।


1
ভাল পয়েন্টস, আপনি ঠিক বলেছেন এটি সিআই এর উপর ভিত্তি করে, যদিও আমি স্পষ্টতার জন্য নির্দিষ্ট কিছু বাক্য গঠন সরিয়েছি। বেশিরভাগ সময় এবং DRY কারণে আমি 'অটলয়েডিং' এর বেশিরভাগ জিনিসই অভ্যস্থ হয়ে পড়েছি, load->modelবেশিরভাগ নিয়ামক এবং পদ্ধতিতে অনেক কিছু পাওয়ার জন্য কিছুটা পাগল মনে হয়েছিল। যথাযথ অটল্যাড ফাংশন ব্যবহার না করা সিআই এর পিছনের সামঞ্জস্যতা সম্পর্কে আমি সবচেয়ে বেশি পছন্দ করি না তবে এটি সম্পূর্ণ অন্য আলোচনা ...
অ্যাডাম ওয়েস্টব্রুক

0

সংক্ষিপ্ত উত্তরটি হ'ল আপনার কোড নমুনার ফর্মটি ছদ্মবেশী স্বজ্ঞাত। দেখে মনে হবে এটি যাওয়ার একটি "মনের উপর সহজ" উপায়।


সমস্যা # 1

আপনার Modelএবং Viewঅবজেক্টগুলি শক্তভাবে মিলিত হবে।

আপনি যদি কখনও এর মধ্যে পদ্ধতিগুলি যুক্ত করতে বা সরাতে হয়Model তবে আপনাকে সেই Viewঅনুযায়ী পরিবর্তন করতে হতে পারে ।

মূলত, এমভিসি কমান্ড এবং পর্যবেক্ষক নিদর্শনগুলি থেকে উদ্ভূত । আপনি একটি স্বতন্ত্র 'মডেল' চান যা ইন্টারফেস / এপিআইয়ের মাধ্যমে চালিত হয় যা Controllerহুক করতে পারে (অর্থাত্ প্রতিনিধি))

প্রায়শই, এর মানে হল ইনজেকশনের Model এবং Viewএকটি মধ্যে দৃষ্টান্ত Controllerএবং তাদের বললেন একটি বৈশিষ্ট্য হিসাবে জমা করার Controller। তারপরে, Controller(যেমন একটি কমান্ড) একটি পদ্ধতিকে কার্যক্ষম অঞ্চল হিসাবে ব্যবহার করে, কোনও View থেকে ডেটা পাস করুনModel ( `মডেলটির পরে অ্যাপ্লিকেশনের অবস্থা আপডেট করার পরে )।

পাসিং ডেটা (অ্যারে, পুনরাবৃত্তিযোগ্য অবজেক্টস, যাই হোক না কেন) এর মধ্যে মিলিত হয় Modelএবং Viewদৃষ্টান্তগুলি আলগা করে । আপনি যদি Modelউদাহরণটি ইনজেক্ট করেন তবে Viewউপরের সমস্যা # 1 দেখুন।

মনে রাখবেন, Viewsউপস্থাপনের রাজ্য স্থানান্তর পদ্ধতি (REST) ​​অনুসরণ করে এইচটিএমএল, জেএসএন, পাঠ্য, এক্সএমএল, এইচটিটিপি শিরোনাম, ওয়াইএএমএল বা প্রায় কিছু হতে পারে

সুতরাং, বুঝতে মধ্যে সম্পর্ক পরিচালনা করতে কিভাবে চাবিকাঠি Modelএবং Viewsকি এটা জন্য সম্পর্ক, দেখতে হয় এক সাথে অধিকের (সম্ভাব্য)! পর্যবেক্ষক প্যাটার্নটি হুবহু এটি সম্পাদন করার জন্য ডিজাইন করা হয়েছিল।

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

সুতরাং, যদি আপনার এক Modelএবং একাধিক থাকে Views, সমস্ত বাস্তবায়ন কোড আপডেট করার সম্ভাব্য মাথাব্যথাViews' কারণ আপনি Model'sএপিআই / পদ্ধতিতে কিছু পরিবর্তন করেছেন এখন তীব্র হয়ে ওঠে ।

উদাহরণগুলিতে নয়Views , ডেটা পাস করুন Models

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