The Development of an Object-Oriented Software ... -...
Transcript of The Development of an Object-Oriented Software ... -...
![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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022041920/5e6b8cdfed18ac2b9e057ba7/html5/thumbnails/26.jpg)
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