+ All Categories
Home > Documents > An Introduction to Design Patterns

An Introduction to Design Patterns

Date post: 01-Nov-2021
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
107
An Introduction to Design Patterns Fabrizio Maria Maggi Institute of Computer Science (The java code and the material is taken from: https://www.tutorialspoint.com/design_pattern/design_pattern_overview.htm)
Transcript
Page 1: An Introduction to Design Patterns

An Introduction to Design

Patterns

Fabrizio Maria Maggi

Institute of Computer Science(The java code and the material is taken from: https://www.tutorialspoint.com/design_pattern/design_pattern_overview.htm)

Page 2: An Introduction to Design Patterns

1 Systems modelling – Fabrizio Maria Maggi

Software Development Methodology

Domain (Class)

Model Interaction

Modelling

Application (Class)

Model

Code

Domain Classes;

Application Classes (e.g.,

Patterns); Attributes;

Relations; Operations

Page 3: An Introduction to Design Patterns

2 Systems modelling – Fabrizio Maria Maggi

Application (Class) Model

Page 4: An Introduction to Design Patterns

3 Systems modelling – Fabrizio Maria Maggi

Application (Class) Model

Page 5: An Introduction to Design Patterns

4 Systems modelling – Fabrizio Maria Maggi

Application (Class) Model

Page 6: An Introduction to Design Patterns

5 Systems modelling – Fabrizio Maria Maggi

Application (Class) Model

Page 7: An Introduction to Design Patterns

6

What is Gang of Four (GOF)

� Gamma, Helm, Johnson, Vlissides. Design Patterns -

Elements of Reusable Object-Oriented Software

Addison-Wesley 1994

� Erich Gamma, Richard Helm, Ralph Johnson and John

Vlissides initiated the concept of Design Pattern in

Software development

� These authors are collectively known as Gang of Four

(GOF).

Page 8: An Introduction to Design Patterns

7

Design Patterns

� Design patterns represent the best practices used by

experienced object-oriented software developers

� Design patterns are solutions to general problems that

software developers faced during software development

� These solutions were obtained by trial and error by

numerous software developers over quite a substantial

period of time

� Learning these patterns helps unexperienced developers

to learn software design in an easy and faster way

Page 9: An Introduction to Design Patterns

8

Categories of Design Patterns

Page 10: An Introduction to Design Patterns

9

Categories of Design Patterns

Page 11: An Introduction to Design Patterns

10 Systems modelling – Fabrizio Maria Maggi

Factory

� This type of design pattern comes under creational

pattern

� In Factory pattern, we create object without exposing the

creation logic to the client and refer to newly created

object using a common interface

Page 12: An Introduction to Design Patterns

11 Systems modelling – Fabrizio Maria Maggi

Factory

Page 13: An Introduction to Design Patterns

12 Systems modelling – Fabrizio Maria Maggi

Factory

Page 14: An Introduction to Design Patterns

13 Systems modelling – Fabrizio Maria Maggi

Factory

Page 15: An Introduction to Design Patterns

14 Systems modelling – Fabrizio Maria Maggi

Factory

Page 16: An Introduction to Design Patterns

15 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

� Abstract Factory patterns work around a super-factory

which creates other factories. This factory is also called as

factory of factories

� This type of design pattern comes under creational

pattern

� In Abstract Factory pattern an interface is responsible for

creating a factory of related objects without explicitly

specifying their classes. Each generated factory can give the

objects as per the Factory pattern

Page 17: An Introduction to Design Patterns

16 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 18: An Introduction to Design Patterns

17 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 19: An Introduction to Design Patterns

18 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 20: An Introduction to Design Patterns

19 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 21: An Introduction to Design Patterns

20 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 22: An Introduction to Design Patterns

21 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 23: An Introduction to Design Patterns

22 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 24: An Introduction to Design Patterns

23 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 25: An Introduction to Design Patterns

24 Systems modelling – Fabrizio Maria Maggi

Abstract Factory

Page 26: An Introduction to Design Patterns

25

Abstract Factory

Page 27: An Introduction to Design Patterns

26 Systems modelling – Fabrizio Maria Maggi

Singleton

� Singleton pattern is one of the simplest design patterns in

Java

� This type of design pattern comes under creational

pattern

� This pattern involves a single class which is responsible to

create an object while making sure that only single object

gets created. This class provides a way to access its only

object which can be accessed directly without need to

instantiate the object of the class

Page 28: An Introduction to Design Patterns

27 Systems modelling – Fabrizio Maria Maggi

Singleton

Page 29: An Introduction to Design Patterns

28 Systems modelling – Fabrizio Maria Maggi

Singleton

Page 30: An Introduction to Design Patterns

29 Systems modelling – Fabrizio Maria Maggi

Builder

� Builder pattern builds a complex object using simple

objects and using a step by step approach

� This type of design pattern comes under creational

pattern

� A Builder class builds the final object step by step. This

builder is independent of other objects

Page 31: An Introduction to Design Patterns

30 Systems modelling – Fabrizio Maria Maggi

Builder

Page 32: An Introduction to Design Patterns

31 Systems modelling – Fabrizio Maria Maggi

Builder

Page 33: An Introduction to Design Patterns

32 Systems modelling – Fabrizio Maria Maggi

Builder

Page 34: An Introduction to Design Patterns

33 Systems modelling – Fabrizio Maria Maggi

Builder

Page 35: An Introduction to Design Patterns

34 Systems modelling – Fabrizio Maria Maggi

Builder

Page 36: An Introduction to Design Patterns

35 Systems modelling – Fabrizio Maria Maggi

Builder

Page 37: An Introduction to Design Patterns

36 Systems modelling – Fabrizio Maria Maggi

Builder

Page 38: An Introduction to Design Patterns

37 Systems modelling – Fabrizio Maria Maggi

Builder

Page 39: An Introduction to Design Patterns

38

Categories of Design Patterns

Page 40: An Introduction to Design Patterns

39 Systems modelling – Fabrizio Maria Maggi

Adapter

� Adapter pattern works as a bridge between two

incompatible interfaces

� This type of design pattern comes under structural

pattern as this pattern combines the capability of two

independent interfaces

� This pattern involves a single class which is responsible to

join functionalities of independent or incompatible

interfaces

Page 41: An Introduction to Design Patterns

40 Systems modelling – Fabrizio Maria Maggi

Adapter

Page 42: An Introduction to Design Patterns

41 Systems modelling – Fabrizio Maria Maggi

Adapter

Page 43: An Introduction to Design Patterns

42 Systems modelling – Fabrizio Maria Maggi

Adapter

Page 44: An Introduction to Design Patterns

43 Systems modelling – Fabrizio Maria Maggi

Adapter

Page 45: An Introduction to Design Patterns

44 Systems modelling – Fabrizio Maria Maggi

Adapter

Page 46: An Introduction to Design Patterns

45 Systems modelling – Fabrizio Maria Maggi

Filter

� Filter pattern or Criteria pattern is a design pattern that

enables developers to filter a set of objects using different

criteria and chaining them in a decoupled way through

logical operations

� This type of design pattern comes under structural

pattern as this pattern combines multiple criteria to

obtain single criteria

Page 47: An Introduction to Design Patterns

46 Systems modelling – Fabrizio Maria Maggi

Filter

Page 48: An Introduction to Design Patterns

47 Systems modelling – Fabrizio Maria Maggi

Filter

Page 49: An Introduction to Design Patterns

48 Systems modelling – Fabrizio Maria Maggi

Filter

Page 50: An Introduction to Design Patterns

49 Systems modelling – Fabrizio Maria Maggi

Filter

Page 51: An Introduction to Design Patterns

50 Systems modelling – Fabrizio Maria Maggi

Filter

Page 52: An Introduction to Design Patterns

51 Systems modelling – Fabrizio Maria Maggi

Filter

Page 53: An Introduction to Design Patterns

52 Systems modelling – Fabrizio Maria Maggi

Filter

Page 54: An Introduction to Design Patterns

53 Systems modelling – Fabrizio Maria Maggi

Filter

Page 55: An Introduction to Design Patterns

54 Systems modelling – Fabrizio Maria Maggi

Composite

� Composite pattern composes objects in term of a tree

structure to represent part as well as whole hierarchy

� This type of design pattern comes under structural

pattern as this pattern creates a tree structure of group

of objects

� This pattern creates a class that contains group of its own

objects: This class provides ways to modify its group of

same objects

Page 56: An Introduction to Design Patterns

55 Systems modelling – Fabrizio Maria Maggi

Composite

Page 57: An Introduction to Design Patterns

56

Composite

Page 58: An Introduction to Design Patterns

57 Systems modelling – Fabrizio Maria Maggi

Decorator

� Decorator pattern allows a user to add new functionality

to an existing object without altering its structure

� This type of design pattern comes under structural

pattern as this pattern acts as a wrapper to existing class

� This pattern creates a decorator class which wraps the

original class and provides additional functionality keeping

class methods signature intact

Page 59: An Introduction to Design Patterns

58 Systems modelling – Fabrizio Maria Maggi

Decorator

Page 60: An Introduction to Design Patterns

59 Systems modelling – Fabrizio Maria Maggi

Decorator

Page 61: An Introduction to Design Patterns

60 Systems modelling – Fabrizio Maria Maggi

Decorator

Page 62: An Introduction to Design Patterns

61 Systems modelling – Fabrizio Maria Maggi

Decorator

Page 63: An Introduction to Design Patterns

62 Systems modelling – Fabrizio Maria Maggi

Decorator

Page 64: An Introduction to Design Patterns

63 Systems modelling – Fabrizio Maria Maggi

Facade

� Facade pattern hides the complexities of the system and

provides an interface to the client using which the client

can access the system

� This type of design pattern comes under structural

pattern as this pattern adds an interface to existing

system to hide its complexities

� This pattern involves a single class which provides

simplified methods required by client and delegates calls to

methods of existing system classes

Page 65: An Introduction to Design Patterns

64 Systems modelling – Fabrizio Maria Maggi

Facade

Page 66: An Introduction to Design Patterns

65 Systems modelling – Fabrizio Maria Maggi

Facade

Page 67: An Introduction to Design Patterns

66 Systems modelling – Fabrizio Maria Maggi

Facade

Page 68: An Introduction to Design Patterns

67 Systems modelling – Fabrizio Maria Maggi

Facade

Page 69: An Introduction to Design Patterns

68

Categories of Design Patterns

Page 70: An Introduction to Design Patterns

69 Systems modelling – Fabrizio Maria Maggi

Command

� Command pattern is a data driven design pattern and falls

under behavioral pattern category

� A request is wrapped under an object as command and

passed to invoker object: Invoker object looks for the

appropriate object which can handle this command and

passes the command to the corresponding object which

executes the command

Page 71: An Introduction to Design Patterns

70 Systems modelling – Fabrizio Maria Maggi

Command

Page 72: An Introduction to Design Patterns

71 Systems modelling – Fabrizio Maria Maggi

Command

Page 73: An Introduction to Design Patterns

72 Systems modelling – Fabrizio Maria Maggi

Command

Page 74: An Introduction to Design Patterns

73 Systems modelling – Fabrizio Maria Maggi

Command

Page 75: An Introduction to Design Patterns

74 Systems modelling – Fabrizio Maria Maggi

Command

Page 76: An Introduction to Design Patterns

75 Systems modelling – Fabrizio Maria Maggi

Iterator

� Iterator pattern is very commonly used design pattern in

Java and .Net programming environment

� This pattern is used to get a way to access the elements of

a collection object in sequential manner without any need

to know its underlying representation

� Iterator pattern falls under behavioral pattern category

Page 77: An Introduction to Design Patterns

76 Systems modelling – Fabrizio Maria Maggi

Iterator

Page 78: An Introduction to Design Patterns

77

Iterator

Page 79: An Introduction to Design Patterns

78

Iterator

Page 80: An Introduction to Design Patterns

79 Systems modelling – Fabrizio Maria Maggi

Observer

� Observer pattern is used when there is one-to-many

relationship between objects such as if one object is

modified, its dependent objects are to be notified

automatically

� Observer pattern falls under behavioral pattern

category

Page 81: An Introduction to Design Patterns

80 Systems modelling – Fabrizio Maria Maggi

Observer

Page 82: An Introduction to Design Patterns

81 Systems modelling – Fabrizio Maria Maggi

Observer

Page 83: An Introduction to Design Patterns

82 Systems modelling – Fabrizio Maria Maggi

Observer

Page 84: An Introduction to Design Patterns

83 Systems modelling – Fabrizio Maria Maggi

Observer

Page 85: An Introduction to Design Patterns

84 Systems modelling – Fabrizio Maria Maggi

Observer

Page 86: An Introduction to Design Patterns

85 Systems modelling – Fabrizio Maria Maggi

Observer

Page 87: An Introduction to Design Patterns

86 Systems modelling – Fabrizio Maria Maggi

Strategy

� In Strategy pattern, a class behavior or its algorithm can be

changed at run time

� This type of design pattern comes under behavioral

pattern

� In Strategy pattern, we create objects which represent

various strategies and a context object whose behavior

varies as per its strategy object: The strategy object

changes the executing algorithm of the context object

Page 88: An Introduction to Design Patterns

87 Systems modelling – Fabrizio Maria Maggi

Strategy

Page 89: An Introduction to Design Patterns

88 Systems modelling – Fabrizio Maria Maggi

Strategy

Page 90: An Introduction to Design Patterns

89 Systems modelling – Fabrizio Maria Maggi

Strategy

Page 91: An Introduction to Design Patterns

90 Systems modelling – Fabrizio Maria Maggi

Strategy

Page 92: An Introduction to Design Patterns

91 Systems modelling – Fabrizio Maria Maggi

Template

� In Template pattern, an abstract class exposes defined

way(s)/template(s) to execute its methods: Its subclasses

can override the method implementation as per need but

the invocation is to be in the same way as defined by an

abstract class

� This pattern comes under behavioral pattern category

Page 93: An Introduction to Design Patterns

92 Systems modelling – Fabrizio Maria Maggi

Template

Page 94: An Introduction to Design Patterns

93 Systems modelling – Fabrizio Maria Maggi

Template

Page 95: An Introduction to Design Patterns

94 Systems modelling – Fabrizio Maria Maggi

Template

Page 96: An Introduction to Design Patterns

95 Systems modelling – Fabrizio Maria Maggi

Template

Page 97: An Introduction to Design Patterns

96 Systems modelling – Fabrizio Maria Maggi

Visitor

� In Visitor pattern, we use a visitor class which changes the

executing algorithm of an element class: By this way,

execution algorithm of element can vary as and when

visitor varies

� This pattern comes under behavioral pattern category

� As per the pattern, element object has to accept the visitor

object so that visitor object handles the operation on the

element object

Page 98: An Introduction to Design Patterns

97 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 99: An Introduction to Design Patterns

98 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 100: An Introduction to Design Patterns

99 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 101: An Introduction to Design Patterns

100 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 102: An Introduction to Design Patterns

101 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 103: An Introduction to Design Patterns

102 Systems modelling – Fabrizio Maria Maggi

Visitor

Page 104: An Introduction to Design Patterns

The Entity-Control-Boundary Pattern

System modelling – Fabrizio Maria Maggi103

http://www.ibm.com

Page 105: An Introduction to Design Patterns

The Entity-Control-Boundary Pattern

System modelling – Fabrizio Maria Maggi104

http://www.ibm.com

Page 106: An Introduction to Design Patterns

The Entity-Control-Boundary Pattern

System modelling – Fabrizio Maria Maggi105

http://www.ibm.com

Functionality to be implemented

Page 107: An Introduction to Design Patterns

The Entity-Control-Boundary Pattern

System modelling – Fabrizio Maria Maggi106

http://www.ibm.com

Functionality to be implementedMost of the calls come from the controller

that plays the role of the „orchestrator“ in

the implementation of the functionality


Recommended