Chapter 8 Object Design Reuse and Patterns. More Patterns Abstract Factory: Provide manufacturer independence Builder: Hide a complex creation process.

Slides:



Advertisements
Similar presentations
 Recent researches show that predicative programming can be used to specify OO concepts including classes, objects, interfaces, methods, single and multiple.
Advertisements

Observer Method 1. References Gamma Erich, Helm Richard, “Design Patterns: Elements of Reusable Object- Oriented Software” 2.
Chapter 8, Object Design: Design Patterns II Using UML, Patterns, and Java Object-Oriented Software Engineering.
CSE3308/CSC Software Engineering: Analysis and DesignLecture 5B.1 Software Engineering: Analysis and Design - CSE3308 Patterns CSE3308/CSC3080/DMS/2000/12.
CSE Software Engineering: Analysis and Design, 2005Lecture 8A.1 Software Engineering: Analysis and Design - CSE3308 Design and Analysis Patterns.
1 CS 501 Spring 2005 CS 501: Software Engineering Lecture 17 Object Oriented Design 3.
CS CS 5150 Software Engineering Lecture 17 Object Oriented Design 3.
CSE Software Engineering: Analysis and Design, 2002Lecture 7B.1 Software Engineering: Analysis and Design - CSE3308 Patterns CSE3308/DMS/2002/15.
Chapter 8, Object Design: Reuse and Patterns (Lecture II)
1 CS 501 Spring 2008 CS 501: Software Engineering Lectures 17 & 18 Object Oriented Design 3 & 4.
Design Patterns Based on Design Patterns. Elements of Reusable Object-Oriented Software. by E.Gamma, R. Helm, R. Johnson,J. Vlissides.
CS CS 5150 Software Engineering Lecture 16 Object Oriented Design 2.
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
CS CS 5150 Software Engineering Lecture 16 Object Oriented Design 2.
ECE 355 Design Patterns Tutorial Part 2 (based on slides by Ali Razavi) Presented by Igor Ivković
Reuse Activities Selecting Design Patterns and Components
1 CS 501 Spring 2007 CS 501: Software Engineering Lectures 17 & 18 Object Oriented Design 3 & 4.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Design Patterns Ric Holt & Sarah Nadi U Waterloo, March 2010.
Creational Patterns Making Objects The Smart Way Brent Ramerth Abstract Factory, Builder.
Chapter 8, Object Design: Design Patterns II Using UML, Patterns, and Java Object-Oriented Software Engineering.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns III.
Behavioral Patterns  Behavioral patterns are patterns whose purpose is to facilitate the work of algorithmic calculations and communication between classes.
BDP Behavioral Pattern. BDP-2 Behavioral Patters Concerned with algorithms & assignment of responsibilities Patterns of Communication between Objects.
Design Patterns.
CS 210 Introduction to Design Patterns September 28 th, 2006.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns III.
UML - Patterns 1 Design Patterns. UML - Patterns 2 Becoming Good OO Developers Developing good OO Software is hard Takes a lot of time to take advantage.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Outline of the Lecture  Patterns covered  Composite:
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Q3: common mistakes Dashed lines for data flow &
CEN 4010 Ninth Lecture March 4, 2005 Introduction to Software Engineering (CEN-4010) Spring 2005 Instructor: Masoud Sadjadi
Proxy Pattern: Motivation
COP 3331 Object-Oriented Analysis and Design 1 Patterns Again  Review of design pattern concepts  What is a design pattern?  Modifiable designs  Patterns.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
CS 210 Adapter Pattern October 19 th, Adapters in real life Page 236 – Head First Design Patterns.
Chapter 38 Persistence Framework with Patterns 1CS6359 Fall 2011 John Cole.
Unit 4 Object-Oriented Design Patterns NameStudent Number CAI XIANGHT082182A KYAW THU LINHT082238Y LI PENGFEIHT082220L NAUNG NAUNG LATTHT082195L PLATHOTTAM.
Structural Design Patterns
Design Pattern Dr. Zhen Jiang West Chester University url:
Proxy, Observer, Symbolic Links Rebecca Chernoff.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
CS 210 Final Review November 28, CS 210 Adapter Pattern.
BEHAVIORAL PATTERNS 13-Sep-2012 Presenters Sanjeeb Kumar Nanda & Shankar Gogada.
Elaboration Iteration 3 – Part 3 - Persistence Framework -
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering October 17, 2001 Design.
Advanced Object-oriented Design Patterns Creational Design Patterns.
Example to motivate discussion We have two lists (of menu items) one implemented using ArrayList and another using Arrays. How does one work with these.
Proxy Pattern defined The Proxy Pattern provides a surrogate or placeholder for another object to control access to it by creating a representative object.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
CS 5150 Software Engineering Lecture 16 Program Design 3.
Reference – Object Oriented Software Development Using Java - Jia COP 3331 Object Oriented Analysis and Design Chapter 10 – Patterns Jean Muhammad.
Five Minute Design Patterns Doug Marttila Forest and the Trees May 30, 2009 Template Factory Singleton Iterator Adapter Façade Observer Command Strategy.
Abstract Factory pattern Intent Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Review of last class. Design patterns CreationalStructuralBehavioral Abstract Factory Builder Factory Singleton etc. Adapter Bridge Composite Decorator.
CEN 5011 Sixth Lecture (2 nd part) Oct 20, 2004 Advance Software Engineering (CEN-5011) Fall 2004 Instructor: Masoud Sadjadi
Design Patterns: MORE Examples
Chapter 8, Object Design: Reuse and Patterns III
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
Factory Patterns 1.
Design Patterns with C# (and Food!)
object oriented Principles of software design
Presented by Igor Ivković
Design Patterns Outline
Ms Munawar Khatoon IV Year I Sem Computer Science Engineering
Informatics 122 Software Design II
Chapter 8, Design Patterns Introduction
Presented by Igor Ivković
Presentation transcript:

Chapter 8 Object Design Reuse and Patterns

More Patterns Abstract Factory: Provide manufacturer independence Builder: Hide a complex creation process Proxy: Provide Location transparency Command: Encapsulate control flow Observer: Provide publisher/subscribe mechanism Strategy: Support family of algorithms, separate from policy and mechanism

Review: Design pattern A design pattern is –a template solution to a recurring design problem –Look before re-inventing the wheel –reusable design knowledge Higher level than classes or data structures Lower level than application frameworks –an example of modifiable design Learning to design starts by studying other designs

Why are modifiable designs important? A modifiable design enables –an iterative and incremental development cycle concurrent development risk management flexibility to change –to minimize the introduction of new problems when fixing old ones –to deliver more functionality after initial delivery

What makes a design modifiable? Low coupling and high cohesion Clear dependencies Explicit assumptions

How do design patterns help? They are generalized from existing systems They provide a shared vocabulary to designers They provide examples of modifiable designs Abstract classes Delegation

More Patterns Structural pattern –Proxy Creational Patterns –Abstract Factory –Builder Behavioral pattern –Command –Observer –Strategy

Proxy Pattern Object Creation and Initialization is expensive Defer object creation and object initialization to the time you need the object Proxy pattern: –Reduces the cost of accessing objects –Uses another object (“the proxy”) that acts as a stand-in for the real object –The proxy creates the real object only if the user asks for it

Proxy Pattern Subject Request() RealSubject Request() Proxy Request() realSubject

Proxy Pattern Interface inheritance is used to specify the interface shared by Proxy and RealSubject. Delegation is used to catch and forward any accesses to the RealSubject (if desired) Proxy patterns can be used for lazy evaluation and for remote invocation.

Proxy Applicability Remote Proxy –Local representative for an object in a different address space –Caching of information: Good if information does not change too often Virtual Proxy –Object is too expensive to create or too expensive to download –Proxy is a standin

Protection Proxy –Proxy provides access control to the real object –Useful when different objects should have different access and viewing rights for the same document. –Example: Grade information for a student shared by administrators, teachers and students.

Different Kinds of Patterns Structural Patterns –Adapters, Bridges, Facades, and Proxies are variations on a single theme: They reduce the coupling between two or more classes They introduce an abstract class to enable future extensions They encapsulate complex structures

Behavioral Patterns –Here we are concerned with algorithms and the assignment of responsibilies between objects: Who does what? –Behavorial patterns allow us to characterize complex control flows that are difficult to follow at runtime. Creational Patterns –Here we our goal is to provide a simple abstraction for a complex instantiation process. –We want to make the system independent from the way its objects are created, composed and represented.

Command Pattern: Behavioral Want to build user interface and menus You want to make the user interface reusable across many applications –You cannot hardcode the meanings of the menus for the various applications –The applications only know what has to be done when a menu is selected. Such a menu can easily be implemented with the Command Pattern

Command execute() Receiver action() Client Invoker ConcreteCommand execute() binds

Command Pattern Client creates a ConcreteCommand and binds it with a Receiver. Client hands the ConcreteCommand over to the Invoker which stores it. The Invoker has the responsibility to do the command (“execute” or “undo”).

Command pattern Applicability Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.” Uses: Undo queues Database transaction buffering

Observer pattern: Behavioral “Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.” Also called “Publish and Subscribe” Uses: –Maintaining consistency across redundant state –Optimizing batch changes to maintain consistency

Observer update() Subject attach(observer) detach(observer) notify() ConcreteSubject getState() setState(newState) subjectState ConcreteObserver update() observerState observers subject * The Subject represents the actual state, the Observers represent different views of the state.

Strategy Pattern: Behavioral Many different algorithms exists for the same task Different algorithms will be appropriate at different times We don’t want to support all the algorithms if we don’t need them If we need a new algorithm, we want to add it easily without disturbing the application using the algorithm

Strategy AlgorithmInterface Context ContextInterface() ConcreteStrategyC AlgorithmInterface() * ConcreteStrategyB AlgorithmInterface() ConcreteStrategyA AlgorithmInterface() Policy Policy decides which Strategy is best given the current Context

Strategy Sort() Database Search() Sort() Strategy * BubbleSort Sort() QuickSort Sort() MergeSort Sort()

Applicability of Strategy Pattern Many related classes differ only in their behavior. Strategy allows to configure a single class with one of many behaviors Different variants of an algorithm are needed that trade-off space against time. All these variants can be implemented as a class hierarchy of algorithms

Abstract Factory Creational Consider a facility management system for an intelligent house that supports different control systems –How can you write a single control system that is independent from the manufacturer?

AbstractFactory CreateProductA CreateProductB CreateProductA CreateProductB AbstractProductA ProductA1 ProductA2 AbstractProductB ProductB1 ProductB2 ConcreteFactory 1 CreateProductA CreateProductB ConcreteFactory 2 Client Initiation Assocation: Class ConcreteFactory2 initiates the associated classes ProductB2 and ProductA2

Applicability for Abstract Factory Pattern Independence from Initialization or Represenation: –The system should be independent of how its products are created, composed or represented Manufacturer Independence: –A system should be configured with one family of products, where one has a choice from many different families. –You want to provide a class library for a customer (“facility management library”), but you don’t want to reveal what particular product you are using.

Constraints on related products –A family of related products is designed to be used together and you need to enforce this constraint Cope with upcoming change: –You use one particular product family, but you expect that the underlying technology is changing very soon, and new products will appear on the market.

Summary Structural Patterns –Focus: How objects are composed to form larger structures –Problems solved: Realize new functionality from old functionality, Provide flexibility and extensibility Behavioral Patterns –Focus: Algorithms and the assignment of responsibilities to objects –Problem solved: Too tight coupling to a particular algorithm Creational Patterns –Focus: Creation of complex objects –Problems solved: Hide how complex objects are created and put together

Conclusion Design patterns –Provide solutions to common problems. –Lead to extensible models and code. –Can be used as is or as examples of interface inheritance and delegation. –Apply the same principles to structure and to behavior.