آموزش design pattern در برنامه نویسی و اصول و مبانی+ PDF رایگان

رتبه: 5 ار 2 رای SSSSS
design pattern
نویسنده: تیم تولید محتوا زمان مطالعه 7 دقیقه
Banner Image

الگوهای طراحی برای اولین بار توسط کریستوف الکساندر (Christopher Alexander) ارائه شدند. در واقع الگوهای طراحی به عنوان راه حل هایی برای مشکلات فرایند برنامه نویسی معرفی شده اند. این الگوها که توسط متخصصان باتجربه در زمینهٔ شییٔ‌گرایی ابداع شده‌اند کمک می‌کنند تا سورس‌کدی انعطاف‌پذیرتر و تغییرپذیرتر شود. استفادهٔ صحیح و اصولی از دیزاین پترن‌ها در توسعهٔ نرم‌‌افزارهای حرفه‌ای بسیار تأثیرگذار است. دراین مقاله سعی داریم تا مفهوم دیزاین پترن را شرح دهیم و هر آنچه که لازم است را به شما آموزش دهیم.

Design Pattern (الگوی طراحی) چیست؟

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

کاربرد Design Pattern

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

آشنایی با انواع دیزاین پترن‌ها

مهم‌تر از همه اینکه هر دیزاین‌ پترنی را می‌توان به عنوان شمشیر دولبه‌ای در نظر گرفت که اگر در جای نادرست به‌ کار رود، مشکلات زیادی را به وجود می آورد و استفاده اصولی آن توسعه نرم افزاری را به دنبال خواهد داشت.

دیزاین‌ پترن‌ها معمولاً در سه گروه اصلی دسته‌بندی می‌شوند که عبارتند از:

1- الگوهای طراحی تکوینی (Creational Design Patterns)

الگوهای طراحی Creational برای حل مشکلات مربوط به ایجاد اشیا در نرم افزار استفاده میشوند.

متداول‌ترین دیزاین پترن‌های Creational عبارتند از :

  • Factory Method
  • Singleton
  • Prototype
  • Abstract Factory
  • Builder
  • Object Pool

شی گرایی چیست؟ زبانهای‌ برنامه نویسی شیء گرا کدامند؟

2- الگوهای طراحی ساختاری (Structural Design Patterns)

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

متداول‌ترین دیزاین پترن‌های Structural عبارتند از :

  • Adapter
  • Decorator
  • Facade
  • Bridge
  • Composite
  • Flyweight
  • Proxy

3- الگوهای طراحی رفتاری (Behavioral Design Patterns)

الگوهای طراحی Behavioral راهکارهای کدنویسی مربوط به تعامل و ارتباط اشیا هستند.

این الگوهای طراحی عبارتند از:

  • Chain of responsibility
  • Strategy
  • Iterator
  • Command
  • Mediator
  • Memento
  • Observer
  • State
  • Template Method
  • Visitor

بهترین زبان برنامه نویسی برای کار و درآمدزایی

مزایای استفاده از الگوهای طراحی

  • افزایش مقیاس پذیری (scalability)
  • افزایش قابلیت توسعه پذیری (expandability)
  • افزایش انعطاف پذیری (flexibility)
  • افزایش سرعت توسعه نرم افزارها
  • کاهش خطاها و مشکلات
  • کاهش میزان کدنویسی

نقد الگوهای طراحی

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

مفاهیم و مبانی مهم اولیه و آموزش ویدیویی

۱. مفاهیم پایه‌ای الگوهای طراحی

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

  • مزایای الگوهای طراحی:

    • بهبود کیفیت کد.

    • افزایش قابلیت نگهداری و توسعه‌پذیری.

    • کاهش زمان توسعه با استفاده از راه‌حل‌های از پیش تعریف‌شده.

۲. دسته‌بندی الگوهای طراحی

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

الف. الگوهای ایجادی (Creational Patterns)

  • هدف: مدیریت فرآیند ایجاد اشیا.

  • مثال‌ها:

    • Singleton: تضمین می‌کند که تنها یک نمونه از یک کلاس وجود داشته باشد.

    • Factory Method: ایجاد اشیا بدون مشخص کردن کلاس دقیق آن‌ها.

    • Builder: ساخت اشیا پیچیده به صورت گام به گام.

ب. الگوهای ساختاری (Structural Patterns)

  • هدف: سازمان‌دهی کلاس‌ها و اشیا به صورت ساختارهای بزرگ‌تر.

  • مثال‌ها:

    • Adapter: تطبیق رابط‌های ناسازگار.

    • Decorator: افزودن رفتار به اشیا به صورت پویا.

    • Composite: سازمان‌دهی اشیا در ساختارهای درختی.

ج. الگوهای رفتاری (Behavioral Patterns)

  • هدف: مدیریت تعامل و توزیع مسئولیت‌ها بین اشیا.

  • مثال‌ها:

    • Observer: اطلاع‌رسانی به اشیا درباره تغییرات.

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

    • Command: کپسوله‌سازی درخواست‌ها به عنوان اشیا.

۳. الگوهای ایجادی (Creational Patterns)

الف. Singleton

  • هدف: تضمین وجود تنها یک نمونه از یک کلاس.

  • مثال در Python:

    class Singleton:
        _instance = None
    
        def __new__(cls):
            if cls._instance is None:
                cls._instance = super(Singleton, cls).__new__(cls)
            return cls._instance
    
    # استفاده
    s1 = Singleton()
    s2 = Singleton()
    print(s1 is s2)  # True

ب. Factory Method

  • هدف: ایجاد اشیا بدون مشخص کردن کلاس دقیق آن‌ها.

  • مثال در Python:

    from abc import ABC, abstractmethod
    
    class Product(ABC):
        @abstractmethod
        def operation(self):
            pass
    
    class ConcreteProductA(Product):
        def operation(self):
            return "Product A"
    
    class ConcreteProductB(Product):
        def operation(self):
            return "Product B"
    
    class Creator(ABC):
        @abstractmethod
        def factory_method(self):
            pass
    
        def some_operation(self):
            product = self.factory_method()
            return product.operation()
    
    class ConcreteCreatorA(Creator):
        def factory_method(self):
            return ConcreteProductA()
    
    class ConcreteCreatorB(Creator):
        def factory_method(self):
            return ConcreteProductB()
    
    # استفاده
    creator = ConcreteCreatorA()
    print(creator.some_operation())  # Product A

۴. الگوهای ساختاری (Structural Patterns)

الف. Adapter

  • هدف: تطبیق رابط‌های ناسازگار.

  • مثال در Python:

    class Target:
        def request(self):
            return "Target: The default target's behavior."
    
    class Adaptee:
        def specific_request(self):
            return ".eetpadA eht fo roivaheb laicepS"
    
    class Adapter(Target):
        def __init__(self, adaptee):
            self.adaptee = adaptee
    
        def request(self):
            return f"Adapter: (TRANSLATED) {self.adaptee.specific_request()[::-1]}"
    
    # استفاده
    adaptee = Adaptee()
    adapter = Adapter(adaptee)
    print(adapter.request())  # Adapter: (TRANSLATED) Special behavior of the Adaptee.

ب. Decorator

  • هدف: افزودن رفتار به اشیا به صورت پویا.

  • مثال در Python:

    class Component:
        def operation(self):
            return "Component"
    
    class Decorator(Component):
        def __init__(self, component):
            self._component = component
    
        def operation(self):
            return f"Decorator({self._component.operation()})"
    
    # استفاده
    component = Component()
    decorated = Decorator(component)
    print(decorated.operation())  # Decorator(Component)

۵. الگوهای رفتاری (Behavioral Patterns)

الف. Observer

  • هدف: اطلاع‌رسانی به اشیا درباره تغییرات.

  • مثال در Python:

    class Subject:
        def __init__(self):
            self._observers = []
    
        def attach(self, observer):
            self._observers.append(observer)
    
        def notify(self):
            for observer in self._observers:
                observer.update(self)
    
    class Observer:
        def update(self, subject):
            pass
    
    class ConcreteObserver(Observer):
        def update(self, subject):
            print("Observer: Reacted to the event")
    
    # استفاده
    subject = Subject()
    observer = ConcreteObserver()
    subject.attach(observer)
    subject.notify()  # Observer: Reacted to the event

ب. Strategy

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

  • مثال در Python:

    from abc import ABC, abstractmethod
    
    class Strategy(ABC):
        @abstractmethod
        def execute(self, data):
            pass
    
    class ConcreteStrategyA(Strategy):
        def execute(self, data):
            return sorted(data)
    
    class ConcreteStrategyB(Strategy):
        def execute(self, data):
            return sorted(data, reverse=True)
    
    class Context:
        def __init__(self, strategy):
            self._strategy = strategy
    
        def execute_strategy(self, data):
            return self._strategy.execute(data)
    
    # استفاده
    data = [1, 3, 2]
    context = Context(ConcreteStrategyA())
    print(context.execute_strategy(data))  # [1, 2, 3]

درس 1

درس 2

درس 3

درس 4

درس 5

دانلود جزوه PDF آموزش دیزاین پترنها

pdf  دانلود PDF آموزش الگوهای طراحی

آموزشهای رایگان برنامه نویسی برای هر زبانی در اینجا

profile name
تیم تولید محتوا

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه
آموزش برنامه نویسی سی پلاس پلاس
آموزش برنامه نویسی سی پلاس پلاس
قیمت محصول 80٪ 70,000 تومان 350,000
ادامه مطلب
آموزش گیت و گیت هاب از صفر تا صد
آموزش گیت و گیت هاب از صفر تا صد
قیمت محصول 10٪ 440,000 تومان 490,000
ادامه مطلب

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

1 2 3 4 5

1 نظر درباره «آموزش design pattern در برنامه نویسی و اصول و مبانی+ PDF رایگان»

  • محمد
    محمد آیا این دیدگاه مفید بود ؟

    سلام.ممنون از آموزش خوبتون خستهن باشید

    پاسخ
  • ناشناس
    ناشناس آیا این دیدگاه مفید بود ؟

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

    پاسخ
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید