برنامه نویسی

الگوهای طراحی PHP: نمای از راه دور

الگوی طراحی نمای از راه دور

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

در PHP ، نمای دور افتاده الگوی به ویژه در مواردی که سرور یک API یا خدمات وب را به مشتری ارائه می دهد ، مفید است.

شکل

چگونه کار می کند

  • در شکل کلاس تعامل با زیر سیستم ها یا خدمات مختلف را ساده می کند.
  • مشتری به جای چندین تماس ریز دانه ، یک تماس با نمای را انجام می دهد.
  • نمای نمای با خدمات اساسی ، هرگونه پردازش داده لازم را انجام می دهد و پاسخ ساده تری را به مشتری باز می گرداند.

اجرای

بیایید تصور کنیم نمای دور افتاده این پیچیدگی تعامل با چندین سرویس دهنده را در دست گرفتن داده های کاربر ، سفارشات و موجودی در یک سیستم تجارت الکترونیکی پنهان می کند.

زیر سیستم ها: خدمات از راه دور ریز دانه

این خدمات واقعی هستند که عملیات خاصی را ارائه می دهند ، مانند جزئیات کاربر ، وضعیت سفارش و بررسی موجودی.

// UserService.php - Handles user-related details.
class UserService {
    public function getUserInfo($userId) {
        // Simulate fetching user data from a remote service.
        return [
            'id' => $userId,
            'name' => 'John Doe',
            'email' => 'john.doe@example.com',
        ];
    }
}

// OrderService.php - Handles order-related details.
class OrderService {
    public function getOrderDetails($orderId) {
        // Simulate fetching order details.
        return [
            'orderId' => $orderId,
            'status' => 'Shipped',
            'totalAmount' => 150.75,
        ];
    }
}

// InventoryService.php - Checks inventory levels.
class InventoryService {
    public function checkProductStock($productId) {
        // Simulate inventory stock check.
        return [
            'productId' => $productId,
            'stockLevel' => 42,
        ];
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نمای از راه دور: ساده سازی تعامل

این نمای تماس های این سرویس ها را جمع می کند و یک رابط ساده تر به مشتری ارائه می دهد.

// ECommerceFacade.php - The Remote Facade
class ECommerceFacade {
    private $userService;
    private $orderService;
    private $inventoryService;

    public function __construct() {
        $this->userService = new UserService();
        $this->orderService = new OrderService();
        $this->inventoryService = new InventoryService();
    }

    // Simplified method that aggregates data from all services.
    public function getUserDashboardData($userId, $orderId, $productId) {
        $userInfo = $this->userService->getUserInfo($userId);
        $orderDetails = $this->orderService->getOrderDetails($orderId);
        $stockInfo = $this->inventoryService->checkProductStock($productId);

        // Aggregating and returning a simplified response to the client.
        return [
            'user' => $userInfo,
            'order' => $orderDetails,
            'productStock' => $stockInfo,
        ];
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کد مشتری: تعامل با نمای

مشتری فقط با نمای در تعامل است و نیازی به دانستن از پیچیدگی های زیر سیستم های اساسی ندارد.

// Client code
$facade = new ECommerceFacade();
$dashboardData = $facade->getUserDashboardData(1, 1001, 2001);

echo "User Information: \n";
print_r($dashboardData['user']);

echo "\nOrder Details: \n";
print_r($dashboardData['order']);

echo "\nProduct Stock Info: \n";
print_r($dashboardData['productStock']);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

User Information: 
Array
(
    [id] => 1
    [name] => John Doe
    [email] => john.doe@example.com
)

Order Details: 
Array
(
    [orderId] => 1001
    [status] => Shipped
    [totalAmount] => 150.75
)

Product Stock Info: 
Array
(
    [productId] => 2001
    [stockLevel] => 42
)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مزایای استفاده از نمای از راه دور

  1. کاهش تأخیر: به جای برقراری تماس از راه دور ، مشتری فقط یک تماس را به نمای انجام می دهد.
  2. رابط ساده: مشتریان نیازی به دانستن جزئیات خدمات اساسی ندارند.
  3. جدا سازی: تغییر در زیر سیستم های زیرین بر مشتری تأثیر نمی گذارد ، تا زمانی که رابط نمای سازگار باشد.
  4. قابلیت حفظ بهتر: منطق کسب و کار را می توان در داخل نمای جمع کرد و حفظ آن را آسانتر می کند.

چه موقع از نمای از راه دور استفاده کنید

  • هنگامی که می خواهید تعداد تماس های از راه دور در سیستم های توزیع شده را به حداقل برسانید.
  • هنگامی که شما نیاز به تهیه یک API یکپارچه و بالاتر برای پنهان کردن زیر سیستم های پیچیده دارید.
  • هنگامی که زیر سیستم ها احتمالاً تغییر می کنند اما رابط مشتری باید پایدار بماند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا