26
Department of Computer Engineering Object-Oriented Design Lecture 18: GoF Design Patterns Creational Sharif University of Technology 1

The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Department of Computer Engineering

Object-Oriented Design

Lecture 18:

GoF Design Patterns – Creational

Sharif University of Technology 1

Page 2: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Software Patterns

• Software Patterns support reuse of software architecture and design.

• Patterns capture the static and dynamic structures and collaborations of successful solutions to problems that arise when building applications in a particular domain.

• Patterns represent solutions to problems that arise when developing software within a particular context.

• i.e., “Pattern == problem/solution pair in a context”

Sharif University of Technology 2

Page 3: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

GoF Design Patterns – Principles

• Emphasis on flexibility and reuse through decoupling of classes.

• The underlying principles:

• program to an interface, not to an implementation.

• favor composition over class inheritance.

• find what varies and encapsulate it.

Sharif University of Technology 3

Page 4: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

GoF Design Patterns: General Categories

• 23 patterns are divided into three separate categories:

• Creational patterns

• Deal with initializing and configuring classes and objects.

• Structural patterns

• Deal with decoupling interface and implementation of classes and objects.

• Behavioral patterns

• Deal with dynamic interactions among societies of classes and objects.

Sharif University of Technology 4

Page 5: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

GoF Design Patterns: Purpose and Scope

Sharif University of Technology 5

Page 6: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

GoF Creational Patterns

• Class

• Factory Method: Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory method lets a class defer instantiation to subclasses.

• Object

• Abstract Factory: Provide an interface for creating families of related or dependent objects without specifying their concrete class.

• Builder: Separate the construction of a complex object from its representation so that the same construction process can create different representations.

• Prototype: Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.

• Singleton: Ensure a class only has one instance, and provide a global point of access to it.

Sharif University of Technology 6

Page 7: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Factory Method

• Intent:

• Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

Sharif University of Technology 7

Page 8: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Factory Method: Applicability

• Use the Factory Method pattern when

• a class can't anticipate the class of objects it must create.

• a class wants its subclasses to specify the objects it creates.

• classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclass is the delegate.

Sharif University of Technology 8

Page 9: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Factory Method: Structure

Sharif University of Technology 9

Page 10: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Factory Method: Structure

Sharif University of Technology 10

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 11: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Abstract Factory

• Intent:

• Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

Sharif University of Technology 11

Page 12: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Abstract Factory: Applicability

• Use the Abstract Factory pattern when

• a system should be independent of how its products are created, composed, and represented.

• a system should be configured with one of multiple families of products.

• a family of related product objects is designed to be used together, and you need to enforce this constraint.

• you want to provide a class library of products, and you want to reveal just their interfaces, not their implementations.

Sharif University of Technology 12

Page 13: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Abstract Factory: Structure

Sharif University of Technology 13

Page 14: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Abstract Factory: Structure

Sharif University of Technology 14

Abstract Factory patterns work around a super-factory which creates other factories. This factory is also called as factory of factories

Page 15: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Builder

• Intent:

• Separate the construction of a complex object from its representation so that the same construction process can create different representations.

Sharif University of Technology 15

Page 16: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Builder: Applicability

• Use the Builder pattern when

• the algorithm for creating a complex object should be independent of the parts that make up the object and how they're assembled.

• the construction process must allow different representations for the object that's constructed.

Sharif University of Technology 16

Page 17: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Builder: Structure

Sharif University of Technology 17

Page 18: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Builder: Collaborations

Sharif University of Technology 18

Page 19: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Builder: Structure

Sharif University of Technology 19

A Builder class builds the final object step by step. This builder is independent of other objects

Page 20: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Prototype

• Intent:• Specify the kinds of objects to create using a prototypical instance, and

create new objects by copying this prototype.

Sharif University of Technology 20

Page 21: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Prototype: Applicability

• Use the Prototype pattern when

• the classes to instantiate are specified at run-time, for example, by dynamic loading.

• building a class hierarchy of factories that parallels the class hierarchy of products should be avoided.

• instances of a class can have one of only a few different combinations of state.

• It may be more convenient to install a corresponding number of prototypes and clone them rather than instantiating the class manually.

Sharif University of Technology 21

Page 22: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Prototype: Structure

Sharif University of Technology 22

Page 23: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Prototype: Structure

Sharif University of Technology 23

used when creation of object directly is costlyobject is to be created after a costly database operationWe can cache the object, returns its clone on next request and update the database as and when needed thus reducing database calls.

Page 24: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Singleton

• Intent:

• Ensure a class only has one instance, and provide a global point of access to it.

Sharif University of Technology 24

Page 25: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Singleton: Applicability

• Use the Singleton pattern when

• there must be exactly one instance of a class, and it must be accessible to clients from a well known access point.

• when the sole instance should be extensible by subclassing, and clients should be able to use an extended instance without modifying their code.

Sharif University of Technology 25

Page 26: The Development of an Object-Oriented Software ... - Sharifce.sharif.edu/courses/94-95/1/ce484-1/resources/root/Slides/Object... · a class can't anticipate the class of objects it

Reference

• Gamma, E., Helm, R., Johnson, R., and Vlissides, J., Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley, 1995.

Sharif University of Technology 26