TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 610 subscribers
Post #72 289
#design_patterns
دیزاین پترن MVC یا معماری MVC که مخفف Model, View, Controller هست و تقریبا همتون باهاش آشنایی دارید.

دیزاین پترن MVC یکی از دیزاین پترن های ساختاری است که برای سازماندهی و جداسازی بخش‌های مختلف یک برنامه مورد استفاده قرار می‌گیرد. MVC متدولوژی معماری محبوبی در توسعه نرم‌افزار است که به برنامه‌ها انعطاف‌پذیری، قابلیت تست و قابلیت نگهداری بیشتری می‌بخشد.

مدل (Mpdel): مدل مسئولیتی را بر عهده دارد که داده‌ها و منطق برنامه را مدیریت کند. مدل‌ها معمولاً شامل کلاس‌ها و ساختارهای داده‌ای هستند که داده‌ها را نگهداری و عملیاتی روی آن‌ها را انجام می‌دهند. مثال‌هایی از مدل‌ها شامل کلاس‌های مرتبط با پایگاه داده، کلاس‌های مدیریت کننده داده و کلاس‌های مرتبط با قوانین برنامه هستند.

ویو یا نما (View): نما مسئولیت نمایش داده‌ها را دارد و بر اساس داده‌هایی که از مدل دریافت می‌کند، اطلاعات را به کاربر نمایش می‌دهد. نما معمولاً شامل تمپلیت‌ها، صفحات و بخش‌های واسط کاربری است که برای نمایش اطلاعات به کاربر استفاده می‌شود. نما مستقیماً با کاربر در ارتباط است و تغییرات در نما بر اثر ورودی کاربر اتفاق می‌افتد.

کنترلر یا کنترل کننده (Controller): کنترل‌کننده مسئولیت هدایت جریان کار بین مدل و نما را بر عهده دارد. وظیفه کنترل‌کننده این است که ورودی‌های کاربر را دریافت کرده، عملیات لازم را بر روی مدل انجام دهد و سپس نمایش مناسب را به نما بدهد. به عبارتی، کنترل‌کننده پلی بین مدل و نما است. مثال‌هایی از عملیاتی که کنترل‌کننده انجام می‌دهد، شامل بررسی validate کردن ورودی‌ها، انجام تغییرات در مدل و انتقال داده‌ها به نما است.

در معماری MVC، نمایش داده‌ها و همچنین منطق برنامه جدا از یکدیگر می‌شوند. این امکان را به توسعه‌دهندگان می‌دهد تا بخش‌های مختلف برنامه را به صورت مستقل توسعه دهند و تغییرات را در بخش‌های دیگر تأثیر ندهد. همچنین، جدا کردن منطق برنامه از نمایش داده‌ها باعث ساده‌سازی فرآیند تست و نگهداری می‌شود.

مثال :
class Model {
private $data;

public function setData($data) {
$this->data = $data;
}

public function getData() {
return $this->data;
}
}

class View {
public function render($data) {
echo "Data: " . $data;
}
}

class Controller {
private $model;
private $view;

public function __construct(Model $model, View $view) {
$this->model = $model;
$this->view = $view;
}

public function processData($data) {
$this->model->setData($data);
$data = $this->model->getData();
$this->view->render($data);
}
}

$model = new Model();
$view = new View();
$controller = new Controller($model, $view);
$controller->processData("Hello, World!");

Result:
Data: Hello, World!

در مثال بالا، مدل (Model) مسئولیتی برای نگهداری و مدیریت داده‌ها دارد. نما (View) وظیفه نمایش داده‌ها را دارد و کنترل‌کننده (Controller) وظیفه هدایت جریان کار بین مدل و نما را بر عهده دارد. با استفاده از کنترل‌کننده، داده ورودی (Hello, World!) به مدل داده شده، سپس از مدل خوانده شده و در نما نمایش داده می‌شود.

این معماری به توسعه‌دهندگان امکان می‌دهد که به صورت جداگانه بر روی هر بخش (مدل، نما و کنترل‌کننده) کار کنند و به سادگی تغییرات را اعمال کنند. همچنین، این الگوی طراحی باعث می‌شود برنامه ماژولارتر و قابل تست‌تر باشد.
.
More from @amirhdeveloper
  1. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  2. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  3. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  4. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  5. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  6. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →