TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 610 subscribers
Post #80 135
#design_patterns
دیزاین پترن Facade یکی از الگوهای معماری نرم‌افزاری است که به انتزاع کردن یک رابط ساده‌تر برای دسترسی به ساب سیستم های پیچیده‌تر کمک می‌کند. این الگو، واسطی ساده‌تر برای اجزای پیچیده‌تر سیستم ایجاد می‌کند تا به کاربران اجازه دهد با سیستم برخورد کنند بدون اینکه جزئیات پیچیده را مد نظر قرار دهند.

فرض کنید که شما یک برنامه‌ی پرداخت آنلاین برای یک فروشگاه آنلاین طراحی می‌کنید. فرآیند پرداخت شامل چند مرحله پیچیده‌تر مثل ارتباط با سرور بانک، بررسی اعتبار کارت، ذخیره تراکنش‌ها و ... است. به جای اینکه کلیه جزئیات پیچیده این فرآیند را در هر جای برنامه تکرار کنید، از دیزان پترن Facade استفاده می‌کنیم.

مثال :

ابتدا یک کلاس Facade برای فرآیند پرداخت ایجاد می‌کنیم که به عنوان واسط ساده‌تر با کاربران ارتباط برقرار می‌کند.
class PaymentFacade {
private $paymentGateway;
private $transactionLogger;

public function __construct() {
$this->paymentGateway = new PaymentGateway();
$this->transactionLogger = new TransactionLogger();
}

public function processPayment($creditCard, $amount) {
// Communication with the bank server through PaymentGateway
$response = $this->paymentGateway->makePayment($creditCard, $amount);

// Register the transaction in the TransactionLogger
$this->transactionLogger->logTransaction($creditCard, $amount, $response);

return $response;
}
}

سپس برای هر یک از اجزای پیچیده‌تر که در فرآیند پرداخت استفاده می‌شوند، یک کلاس را پیاده‌سازی می‌کنیم.
class PaymentGateway {
public function makePayment($creditCard, $amount) {
// Connect to the bank server and make payment
return "Transaction Successful";
}
}

class TransactionLogger {
public function logTransaction($creditCard, $amount, $response) {
// Record the transaction in the database or log file
}
}

حالا می‌توانیم در برنامه‌ی خود از کلاس Facade استفاده کنیم و با استفاده از یک متد ساده‌تر فرآیند پرداخت را انجام دهیم.
$paymentFacade = new PaymentFacade();

$creditCard = '1234-5678-9012-3456';
$amount = 100;

$response = $paymentFacade->processPayment($creditCard, $amount);

echo $response;

Result:
Transaction Successful

در این مثال، با استفاده از الگوی طراحی Facade، کار با فرآیند پرداخت به سادگی انجام می‌شود. تمام جزئیات پیچیده‌تر مثل ارتباط با بانک و ثبت تراکنش‌ها، در داخل کلاس‌های جداگانه پنهان شده است. این کلاس‌ها با هم ترکیب شده‌اند تا یک رابط ساده‌تر را ارائه دهند که کاربر می‌تواند به راحتی از آن استفاده کند. این الگو مزیت‌های افزودن اجزا و جداسازی اجزا را به برنامه می‌دهد.
.
  • 👍 2
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 →