Design Patterns: A Comprehensive Overview

 
Design Patterns
 
Rashed Fatehi
 
Introduction
 
Introduction
 
OOP?
Resolve complexity?
Why design patterns?
 
What is design pattern?
 
What is design pattern?
 
Design patterns
 are typical solutions to common problems in software
design.
 
The Catalog of Design Patterns
 
1.
Singelton
2.
Factory Method
3.
Abstract Factory
4.
Builder
5.
Prototype
 
1.
Adapter
2.
Facade
3.
Decorator (Wrapper class)
4.
Proxy
5.
Flyweight
 
1.
Chain of responsibility
2.
Mediator
3.
Observer
4.
Proxy
5.
Strategy
6.
Template method
 
Let’s talk about design patterns in
action
 
Strategy pattern
 
Strategy pattern
 
interface IStrategy is
    method execute(a, b)
 
class ConcreteStrategyAdd implements IStrategy is
    method execute(a, b) is
        return a+b
 
class ConcreteStrategySubtract implements IStrategy is
    method execute(a, b) is
        return a-b
 
class context is
    Strategy: IStrategy;
 
    method executeStrategy(int a, int b) is
        return strategy.execute(a, b)
 
Strategy pattern
 
class ExampleApplication is
    method main() is
        Create context object.
 
        Read first number.
        Read last number.
        Read the desired action from user input.
 
        if (action == addition) then
            context.setStrategy(new ConcreteStrategyAdd())
 
        if (action == subtraction) then
            context.setStrategy(new ConcreteStrategySubtract())
 
        result = context.executeStrategy(First number, Second number)
 
        Print result
 
Decorator pattern (Wrapper class)
 
Decorator pattern (Wrapper class)
 
class OddOrEvenDecorator implements IStrategy is
    Private _strategy: IStrategy;
 
    method executeStrategy(int a, int b) is
        return strategy.execute(a, b)
 
 method IsEven(int a) is
        return a % 2 == 0;
 
 method IsOdd(int a) is
        return a % 2 != 0;
 
Decorator pattern (Wrapper class)
 
class ExampleApplication is
    method main() is
        Create context object.
 
        Read first number.
        Read last number.
        Read the desired action from user input.
 
        if (action == addition) then
            context.setStrategy(new OddOrEvenDecorator (new ConcreteStrategyAdd()))
 
        if (action == subtraction) then
            context.setStrategy(new OddOrEvenDecorator (new ConcreteStrategySubtract()))
 
        result = context. Strategy.IsOdd(First number)
        Print result
 
Facade pattern
 
Factory method pattern
 
Factory method pattern
 
abstract class AbstractDialog is
   abstract method createButton():Button
 
   method render() is
   Button okButton = createButton()
   okButton.render()
class WindowsDialog extends AbstractDialog is
    method createButton():Button is
        return new WindowsButton()
 
class WebDialog extends AbstractDialog is
    method createButton():Button is
        return new HTMLButton()
 
Factory method pattern
 
class Application is
    field dialog: AbstractDialog
 
    method initialize() is
        config = readApplicationConfigFile()
 
        if (config.OS == "Windows") then
            dialog = new WindowsDialog()
        else if (config.OS == "Web") then
            dialog = new WebDialog()
        else
            throw new Exception("Error! Unknown operating system.")
 
method main() is
        this.initialize()
        dialog.render()
 
Singelton pattern
 
Singelton pattern
 
Class Database is
   private static field instance: Database
   private constructor Database() is
     //Some Initiolization code
 
public static method getInstance() is
        if (Database.instance == null) then
            acquireThreadLock() and then
        if (Database.instance == null) then
                    Database.instance = new Database()
 
        return Database.instance
 
Chain of responsibility pattern
 
Observer pattern
 
Refrences
 
Why is OOP Such a Waste?. A waste of time of money. | by Ilya Suzdalnitskiy |
Medium
Design Patterns (refactoring.guru)
Author, Eric Freeman & Author, Elisabeth Robson & Author, Bert Bates &
Author Kathy Sierra (2004).Head First Design Patterns. Location: O'Reilly
Slide Note
Embed
Share

Exploring the world of design patterns, this content delves into the essence of design patterns, their application in software design to resolve complexity, and the different types of design patterns - creational, structural, and behavioral. It also showcases examples of popular design patterns such as Strategy and Decorator, providing detailed insights into their implementation and usage in real-world scenarios.

  • Design Patterns
  • Software Design
  • Creational
  • Structural
  • Behavioral

Uploaded on Sep 21, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Design Patterns Rashed Fatehi

  2. Introduction

  3. Introduction OOP? Resolve complexity? Why design patterns?

  4. What is design pattern?

  5. What is design pattern? Design patterns are typical solutions to common problems in software design.

  6. The Catalog of Design Patterns Singelton Factory Method Abstract Factory Builder Prototype 1. Creational patterns: Provide various object creation mechanisms 2. 3. 4. 5. Adapter Facade Decorator (Wrapper class) Proxy Flyweight 1. Structural patterns: Explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient 2. 3. 4. 5. Chain of responsibility Mediator Observer Proxy Strategy Template method 1. Behavioral patterns: Concerned with algorithms and the assignment of responsibilities between objects 2. 3. 4. 5. 6.

  7. Lets talk about design patterns in action

  8. Strategy pattern

  9. Strategy pattern interface IStrategy is method execute(a, b) class ConcreteStrategyAdd implements IStrategy is method execute(a, b) is return a+b class ConcreteStrategySubtract implements IStrategy is method execute(a, b) is return a-b class context is Strategy: IStrategy; method executeStrategy(int a, int b) is return strategy.execute(a, b)

  10. Strategy pattern class ExampleApplication is method main() is Create context object. Read first number. Read last number. Read the desired action from user input. if (action == addition) then context.setStrategy(new ConcreteStrategyAdd()) if (action == subtraction) then context.setStrategy(new ConcreteStrategySubtract()) result = context.executeStrategy(First number, Second number) Print result

  11. Decorator pattern (Wrapper class)

  12. Decorator pattern (Wrapper class) class OddOrEvenDecorator implements IStrategy is Private _strategy: IStrategy; method executeStrategy(int a, int b) is return strategy.execute(a, b) method IsEven(int a) is return a % 2 == 0; method IsOdd(int a) is return a % 2 != 0;

  13. Decorator pattern (Wrapper class) class ExampleApplication is method main() is Create context object. Read first number. Read last number. Read the desired action from user input. if (action == addition) then context.setStrategy(new OddOrEvenDecorator (new ConcreteStrategyAdd())) if (action == subtraction) then context.setStrategy(new OddOrEvenDecorator (new ConcreteStrategySubtract())) result = context. Strategy.IsOdd(First number) Print result

  14. Facade pattern

  15. Factory method pattern

  16. Factory method pattern abstract class AbstractDialog is abstract method createButton():Button method render() is Button okButton = createButton() okButton.render() class WindowsDialog extends AbstractDialog is method createButton():Button is return new WindowsButton() class WebDialog extends AbstractDialog is method createButton():Button is return new HTMLButton()

  17. Factory method pattern class Application is field dialog: AbstractDialog method initialize() is config = readApplicationConfigFile() if (config.OS == "Windows") then dialog = new WindowsDialog() else if (config.OS == "Web") then dialog = new WebDialog() else throw new Exception("Error! Unknown operating system.") method main() is this.initialize() dialog.render()

  18. Singelton pattern

  19. Singelton pattern Class Database is private static field instance: Database private constructor Database() is //Some Initiolization code public static method getInstance() is if (Database.instance == null) then acquireThreadLock() and then if (Database.instance == null) then Database.instance = new Database() return Database.instance

  20. Chain of responsibility pattern

  21. Observer pattern

  22. Refrences Why is OOP Such a Waste?. A waste of time of money. | by Ilya Suzdalnitskiy | Medium Design Patterns (refactoring.guru) Author, Eric Freeman & Author, Elisabeth Robson & Author, Bert Bates & Author Kathy Sierra (2004).Head First Design Patterns. Location: O'Reilly

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#