An Introduction to Design Patterns
Transcript of An Introduction to Design Patterns
![Page 1: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/1.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/2.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/3.jpg)
2 Systems modelling – Fabrizio Maria Maggi
Application (Class) Model
![Page 4: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/4.jpg)
3 Systems modelling – Fabrizio Maria Maggi
Application (Class) Model
![Page 5: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/5.jpg)
4 Systems modelling – Fabrizio Maria Maggi
Application (Class) Model
![Page 6: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/6.jpg)
5 Systems modelling – Fabrizio Maria Maggi
Application (Class) Model
![Page 7: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/7.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/8.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/9.jpg)
8
Categories of Design Patterns
![Page 10: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/10.jpg)
9
Categories of Design Patterns
![Page 11: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/11.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/12.jpg)
11 Systems modelling – Fabrizio Maria Maggi
Factory
![Page 13: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/13.jpg)
12 Systems modelling – Fabrizio Maria Maggi
Factory
![Page 14: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/14.jpg)
13 Systems modelling – Fabrizio Maria Maggi
Factory
![Page 15: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/15.jpg)
14 Systems modelling – Fabrizio Maria Maggi
Factory
![Page 16: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/16.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/17.jpg)
16 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 18: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/18.jpg)
17 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 19: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/19.jpg)
18 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 20: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/20.jpg)
19 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 21: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/21.jpg)
20 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 22: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/22.jpg)
21 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 23: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/23.jpg)
22 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 24: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/24.jpg)
23 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 25: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/25.jpg)
24 Systems modelling – Fabrizio Maria Maggi
Abstract Factory
![Page 26: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/26.jpg)
25
Abstract Factory
![Page 27: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/27.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/28.jpg)
27 Systems modelling – Fabrizio Maria Maggi
Singleton
![Page 29: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/29.jpg)
28 Systems modelling – Fabrizio Maria Maggi
Singleton
![Page 30: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/30.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/31.jpg)
30 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 32: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/32.jpg)
31 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 33: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/33.jpg)
32 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 34: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/34.jpg)
33 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 35: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/35.jpg)
34 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 36: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/36.jpg)
35 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 37: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/37.jpg)
36 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 38: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/38.jpg)
37 Systems modelling – Fabrizio Maria Maggi
Builder
![Page 39: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/39.jpg)
38
Categories of Design Patterns
![Page 40: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/40.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/41.jpg)
40 Systems modelling – Fabrizio Maria Maggi
Adapter
![Page 42: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/42.jpg)
41 Systems modelling – Fabrizio Maria Maggi
Adapter
![Page 43: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/43.jpg)
42 Systems modelling – Fabrizio Maria Maggi
Adapter
![Page 44: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/44.jpg)
43 Systems modelling – Fabrizio Maria Maggi
Adapter
![Page 45: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/45.jpg)
44 Systems modelling – Fabrizio Maria Maggi
Adapter
![Page 46: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/46.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/47.jpg)
46 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 48: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/48.jpg)
47 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 49: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/49.jpg)
48 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 50: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/50.jpg)
49 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 51: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/51.jpg)
50 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 52: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/52.jpg)
51 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 53: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/53.jpg)
52 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 54: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/54.jpg)
53 Systems modelling – Fabrizio Maria Maggi
Filter
![Page 55: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/55.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/56.jpg)
55 Systems modelling – Fabrizio Maria Maggi
Composite
![Page 57: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/57.jpg)
56
Composite
![Page 58: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/58.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/59.jpg)
58 Systems modelling – Fabrizio Maria Maggi
Decorator
![Page 60: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/60.jpg)
59 Systems modelling – Fabrizio Maria Maggi
Decorator
![Page 61: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/61.jpg)
60 Systems modelling – Fabrizio Maria Maggi
Decorator
![Page 62: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/62.jpg)
61 Systems modelling – Fabrizio Maria Maggi
Decorator
![Page 63: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/63.jpg)
62 Systems modelling – Fabrizio Maria Maggi
Decorator
![Page 64: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/64.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/65.jpg)
64 Systems modelling – Fabrizio Maria Maggi
Facade
![Page 66: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/66.jpg)
65 Systems modelling – Fabrizio Maria Maggi
Facade
![Page 67: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/67.jpg)
66 Systems modelling – Fabrizio Maria Maggi
Facade
![Page 68: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/68.jpg)
67 Systems modelling – Fabrizio Maria Maggi
Facade
![Page 69: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/69.jpg)
68
Categories of Design Patterns
![Page 70: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/70.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/71.jpg)
70 Systems modelling – Fabrizio Maria Maggi
Command
![Page 72: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/72.jpg)
71 Systems modelling – Fabrizio Maria Maggi
Command
![Page 73: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/73.jpg)
72 Systems modelling – Fabrizio Maria Maggi
Command
![Page 74: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/74.jpg)
73 Systems modelling – Fabrizio Maria Maggi
Command
![Page 75: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/75.jpg)
74 Systems modelling – Fabrizio Maria Maggi
Command
![Page 76: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/76.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/77.jpg)
76 Systems modelling – Fabrizio Maria Maggi
Iterator
![Page 78: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/78.jpg)
77
Iterator
![Page 79: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/79.jpg)
78
Iterator
![Page 80: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/80.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/81.jpg)
80 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 82: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/82.jpg)
81 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 83: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/83.jpg)
82 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 84: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/84.jpg)
83 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 85: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/85.jpg)
84 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 86: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/86.jpg)
85 Systems modelling – Fabrizio Maria Maggi
Observer
![Page 87: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/87.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/88.jpg)
87 Systems modelling – Fabrizio Maria Maggi
Strategy
![Page 89: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/89.jpg)
88 Systems modelling – Fabrizio Maria Maggi
Strategy
![Page 90: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/90.jpg)
89 Systems modelling – Fabrizio Maria Maggi
Strategy
![Page 91: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/91.jpg)
90 Systems modelling – Fabrizio Maria Maggi
Strategy
![Page 92: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/92.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/93.jpg)
92 Systems modelling – Fabrizio Maria Maggi
Template
![Page 94: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/94.jpg)
93 Systems modelling – Fabrizio Maria Maggi
Template
![Page 95: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/95.jpg)
94 Systems modelling – Fabrizio Maria Maggi
Template
![Page 96: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/96.jpg)
95 Systems modelling – Fabrizio Maria Maggi
Template
![Page 97: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/97.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/98.jpg)
97 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 99: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/99.jpg)
98 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 100: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/100.jpg)
99 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 101: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/101.jpg)
100 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 102: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/102.jpg)
101 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 103: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/103.jpg)
102 Systems modelling – Fabrizio Maria Maggi
Visitor
![Page 104: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/104.jpg)
The Entity-Control-Boundary Pattern
System modelling – Fabrizio Maria Maggi103
http://www.ibm.com
![Page 105: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/105.jpg)
The Entity-Control-Boundary Pattern
System modelling – Fabrizio Maria Maggi104
http://www.ibm.com
![Page 106: An Introduction to Design Patterns](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/106.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022012504/617f5e47c427d40c62303366/html5/thumbnails/107.jpg)
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