170 likes | 296 Views
COP 3331 Object Oriented Analysis and Design Chapter 7 – Design by Abastraction. Jean Muhammad. Overview. Introduction to Patterns Generic Components Abstract Coupling. Introduction to Patterns. Design reusable components Template method Strategy Factory Iterator.
E N D
COP 3331 Object Oriented Analysis and DesignChapter 7 – Design by Abastraction Jean Muhammad
Overview • Introduction to Patterns • Generic Components • Abstract Coupling Slides by David Gaitros
Introduction to Patterns • Design reusable components • Template method • Strategy • Factory • Iterator Slides by David Gaitros
Introduction to Patterns • Design pattern was originally articulated by Christopher Alexander and his colleagues to describe architectural designs. • The architectural design of any building can be captured in one of 253 “patterns”. • Each pattern describes a problem that occurs over and over gain in an environment, and then describes the core solution. Slides by David Gaitros
Introduction to Patterns • Software design patterns are classified into three categories: • Creational Patterns • Structural Patterns • Behavioral Patterns Slides by David Gaitros
Introduction to Patterns • Describing design patterns Pattern Name: Category: creational, structural, or behavioral Intent: Also Known As: Applicability: Structure: Participants: Slides by David Gaitros
Generic Components • Refactoring: Refactoring is the process of identifying recurring code and organizing/modifying the code such that it can be used more then once. Slides by David Gaitros
Generic Components • Refactoring consists of: • Identifying code segments in a program that implement the same logic. • Capturing this logic in a generic component that is defined once. • Restructuring the program so that every occurence of the code segment is replaced with a reference to the generic component. Slides by David Gaitros
Generic Components • Refactoring by Inheritance class Common{ void computeAll (. . . ){ computeStep1(); computeStep2(); computeStep3(); } } class ComputationA class ComputationB extends Common{ extends Common { void method1(. . .){ void method2(. . .) { computeAll() computeAll() Slides by David Gaitros
Generic Components • Refactoring by Delegation • To refactor the recurring code sequence in the previous example using delegation, we introduce a helper class instead of inheritance. Slides by David Gaitros
Generic Components class Helper{ void computeAll (. . . ){ computeStep1(); computeStep2(); computeStep3(); } } class ComputationA class ComputationB void compute(. . .){ void compute(. . .) { helper.computeAll() helper.computeAll() } } Helper helper; Helper helper; Slides by David Gaitros
Template Method • Use of an abstract class that serves as a template for classes with shared functionality. • An abstract class contains behavior common to all of its subclasses. • The common behavior is captured in non-abstract methods. • Using abstract classes ensures that all subclasses will inherit the same behavior. Slides by David Gaitros
Strategy Pattern • The strategy pattern can be considered as a variation of the Template method • The hood method and template method reside in different classes. • The abstract methods declared in the Strategy class are the hood methods. • The methods in the Context class that call the hook methods are the template methods. Slides by David Gaitros
Strategy Pattern • Strategy Pattern should be used when: • Many related classes differ only in their behavior • Different variations of an algorithm are needed. • An algorithm uses data that clients should not know about. • A class defines many behaviors, which appear as multiple conditional statements in a method. Slides by David Gaitros
Abstract Coupling • The strategy pattern is an example of abstract coupling. A client accesss a service through an interface or an abstract class without knowing the actual concrete class that provided the service. Slides by David Gaitros
Abstract Coupling Customer Service Provider A Customer Service Provider B Customer Service Provider C Example of Direct Coupling – No Abstraction Slides by David Gaitros
Abstract Coupling Service Provider A Standard Service Protocol Customer Service Provider B Service Provider C Abstract Coupling – Any customer calls the Standard Service Protocol and the correct interface is automatically used. Slides by David Gaitros