8677 642 0919
Tehran
info[@]arka-soft.com

آشنایی با الگوهای طراحی (Design Patterns) در سی شارپ #C

آشنایی با الگوهای طراحی (Design Patterns) در سی شارپ #C

آشنایی با الگوهای طراحی (Design Patterns) در سی شارپ #C

 

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

اهداف استفاده از Design Patterns:

  1. حل مسائل رایج: ارائه راه‌حل‌هایی برای مشکلات متداول در طراحی نرم‌افزار.
  2. بهبود خوانایی و نگهداری کد: الگوها ساختاری واضح و استاندارد برای کد ایجاد می‌کنند.
  3. افزایش انعطاف‌پذیری: کدی که از الگوها استفاده می‌کند، معمولاً انعطاف‌پذیرتر و قابل تغییر است.
  4. کاهش دوباره‌کاری: استفاده مجدد از الگوهای طراحی در پروژه‌های مختلف.

دسته‌بندی Design Patterns ها

الگوهای طراحی به سه دسته کلی تقسیم می‌شوند:

  1. Creational Patterns

این الگوها با نحوه ایجاد اشیاء (Objects) سروکار دارند و اطمینان حاصل می‌کنند که اشیاء به‌طور مناسب ایجاد شوند.

  • Singleton : تضمین می‌کند که یک کلاس فقط یک نمونه دارد و دسترسی به آن از یک نقطهٔ سراسری ممکن است.
				
					public sealed class Singleton
{
    private static readonly Singleton instance = new Singleton();
    private Singleton() { }
    public static Singleton Instance => instance;
}

				
			
  • Factory Method : یک رابط (Interface) برای ایجاد اشیاء فراهم می‌کند و اجازه می‌دهد زیرکلاس‌ها نوع اشیاء را مشخص کنند.
				
					public abstract class Product
{
    public abstract void Use();
}

public class ConcreteProductA : Product
{
    public override void Use() => Console.WriteLine("Using Product A");
}

public abstract class Creator
{
    public abstract Product FactoryMethod();
}

public class ConcreteCreatorA : Creator
{
    public override Product FactoryMethod() => new ConcreteProductA();
}

				
			

Builder : ساخت یک شیء پیچیده را به چندین مرحله تقسیم می‌کند.

				
					public class Product
{
    public List<string> Parts = new List<string>();
    public void Add(string part) => Parts.Add(part);
}

public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract Product GetResult();
}

				
			

       2. Structural Patterns

این الگوها نحوهٔ سازماندهی و ترکیب اشیاء و کلاس‌ها را مشخص می‌کنند تا ساختار سیستم بهینه شود.

Adapter : اجازه می‌دهد اشیاء با رابط‌های ناسازگار با یکدیگر کار کنند.

				
					public interface ITarget
{
    void Request();
}

public class Adaptee
{
    public void SpecificRequest() => Console.WriteLine("Specific Request");
}

public class Adapter : ITarget
{
    private Adaptee adaptee = new Adaptee();
    public void Request() => adaptee.SpecificRequest();
}

				
			

Decorator : قابلیت‌های جدیدی به اشیاء اضافه می‌کند بدون اینکه ساختار آن‌ها را تغییر دهد.

				
					public abstract class Component
{
    public abstract void Operation();
}

public class ConcreteComponent : Component
{
    public override void Operation() => Console.WriteLine("Operation by Component");
}

public abstract class Decorator : Component
{
    protected Component component;
    public void SetComponent(Component component) => this.component = component;
}

				
			

         3. Behavioral Patterns

این الگوها با تعاملات و رفتار بین اشیاء سروکار دارند.

Observer : به اشیاء اجازه می‌دهد تغییرات یک شیء را دنبال کنند.

				
					public interface IObserver
{
    void Update();
}

public class ConcreteObserver : IObserver
{
    public void Update() => Console.WriteLine("Observer Updated");
}

public class Subject
{
    private List<IObserver> observers = new List<IObserver>();
    public void Attach(IObserver observer) => observers.Add(observer);
    public void Notify() => observers.ForEach(o => o.Update());
}

				
			

Strategy : خانواده‌ای از الگوریتم‌ها را تعریف کرده و به‌صورت پویا یکی از آن‌ها را انتخاب می‌کند.

				
					public interface IStrategy
{
    void Execute();
}

public class ConcreteStrategyA : IStrategy
{
    public void Execute() => Console.WriteLine("Executing Strategy A");
}

public class Context
{
    private IStrategy strategy;
    public Context(IStrategy strategy) => this.strategy = strategy;
    public void ExecuteStrategy() => strategy.Execute();
}

				
			

مزایای استفاده از Design Pattern ها

  1. بهبود کیفیت کد: ساختاری منظم‌تر و واضح‌تر برای کد فراهم می‌شود.
  2. افزایش قابلیت استفاده مجدد: الگوها قابلیت استفاده مجدد از کد را فراهم می‌کنند.
  3. استانداردسازی: باعث هماهنگی بیشتر در تیم‌های توسعه می‌شود.
  4. کاهش هزینه توسعه و نگهداری: الگوهای طراحی باعث کاهش زمان توسعه و بهبود قابلیت نگهداری می‌شوند.

 

نتیجه‌گیری :

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

نظر خود را با ما در میان بگذارید

Cart

هیچ محصولی در سبد خرید نیست.

زمینه‌های نمایش داده شده را انتخاب نمایید. بقیه مخفی خواهند شد. برای تنظیم مجدد ترتیب، بکشید و رها کنید.
  • تصویر
  • شناسۀ محصول
  • امتیاز
  • قيمت
  • موجودی
  • دسترسی
  • افزودن به سبد خرید
  • توضیح
  • محتوا
  • وزن
  • اندازه
  • اطلاعات اضافی
برای مخفی‌کردن نوار مقایسه، بیرون را کلیک نمایید
مقایسه
Call Now Button