معرفی الگوی طراحی Facade

معرفی الگوی طراحی Facade

مدت مطالعه : 2 دقیقه

07 اردیبهشت 1402

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

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

چندین عنصر کلیدی در الگوی Facade وجود دارد: 

  • Facade: کلاسی که یک رابط ساده برای یک سیستم پیچیده فراهم می کند و درخواست های وارده را به اشیاء مناسب در سیستم واگذار می کند. 
  • Subsystem: مجموعه ای از کلاس ها که عملکرد سیستم را پیاده سازی می کنند. کلاس Facade با این کلاس ها سروکار خواهد داشت.
  •  Client: قطعه کدی که از Facade برای دسترسی به سیستم استفاده می کند.

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

در ادامه یک مثال ساده از الگوی Facade در سی شارپ آورده شده است:

// Subsystem classes
class SubsystemA
{
    public void MethodA()
    {
       Console.WriteLine("SubsystemA Method");
    }
}
class SubsystemB
{
    public void MethodB()
    {
       Console.WriteLine("SubsystemB Method");
    }
}
// Facade class
class Facade
{
    private readonly SubsystemA subsystemA;
    private readonly SubsystemB subsystemB;
    public Facade()
    {
        subsystemA = new SubsystemA();
        subsystemB = new SubsystemB();
    }
    public void Operation()
    {
        subsystemA.MethodA();
        subsystemB.MethodB();
    }
}
// Client code
class Client
{
    static void Main()
    {
        Facade facade = new Facade();
        facade.Operation();
    }
}

در این مثال، کلاس های SubsystemA و SubsystemB عملکرد یک سیستم پیچیده را پیاده سازی می کنند. کلاس Facade با فراخوانی متدهای مناسب، یک رابط ساده برای سیستم فراهم می کند. کد Client یک نمونه از کلاس Facade ایجاد می کند و متد Operation را برای تعامل با سیستم فراخوانی می کند. خروجی برنامه پس از فراخوانی متد Operation بصورت زیر خواهد بود:

SubsystemA Method
SubsystemB Method

که نشان می دهد Facade قادر است متدهای کلاس های Subsystem را فراخوانی کند و یک رابط ساده برای استفاده ارائه دهد.

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

design patterns

ایجاد کننده (Creational):الگوی طراحی Factory 
الگوی طراحی Builder 
الگوی طراحی Singleton 
الگوی طراحی Prototype 
الگوی طراحی Abstract Factory 
ساختاری (Structural):الگوی طراحی Adapter 
الگوی طراحی Bridge 
الگوی طراحی Composite 
الگوی طراحی Decorator 
الگوی طراحی Facade 
الگوی طراحی Flyweight 
الگوی طراحی Proxy 
رفتاری (Behavioral):الگوی طراحی Chain of Responsibility 
الگوی طراحی Command 
الگوی طراحی Interpreter 
الگوی طراحی Mediator 
الگوی طراحی Memento 
الگوی طراحی Observer 
الگوی طراحی State 
الگوی طراحی Strategy 
الگوی طراحی Template Method 
الگوی طراحی Visitor 
الگوی طراحی Iterator 
  • اشتراک گذاری:
محمدرضا باباخانی
محمدرضا باباخانی

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

آخرین مطالب

سرویس مش؛ ساده سازی ارتباطات میکروسرویس و افزایش رؤیت پذیری

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

اهمیت محاسبات لبه یا Edge Computing

ا توجه به سرعت تحول فناوری، یکی از مفاهیمی که توجه زیادی را به خود جلب کرده و نحوه تعامل ما با سیستم های دیجیتال را تغییر می دهد، محاسبات لبه (Edge Computing) است.

معماری رویداد محور چیست؟

معماری رویداد محور (EDA) یک الگوی طراحی نرم افزار است که در توسعه نرم افزار های مدرن به طور چشمگیری محبوب شده است. در این معماری، جریان داده ها با وقوع رویدادها تعیین می شود. بر خلاف سیستم های متمرکز سنتی که دائماً در حال بررسی وضعیت جدید هستند. معماری رویداد محور به ویژه برای سیستم هایی مفید است که به پردازش حجم زیادی از داده ها بصورت بلادرنگ(real-time) نیاز دارند.

ثبت دیدگاه