CSC/ECE 517 Fall 2010/ch7 7e ab: Difference between revisions
(34 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Protected Variations Pattern= | =Protected Variations Pattern= | ||
__TOC__ | __TOC__ | ||
== | ==Description== | ||
The Protected Variations pattern is a specific example of a [http://en.wikipedia.org/wiki/GRASP_(object-oriented_design) GRASP] [http://en.wikipedia.org/wiki/Design_pattern_(computer_science) design pattern]. It is very broad in its scope. Any object that presents a potential instability within the system due to variations of type is implemented with an interface and [http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2010/ch3_3i_ls#Polymorphism_and_types polymorphism] (discussed in chapter 3) is used to wrap the type.[[#References|<sup>[2]</sup>]] The interface could be a small enough to cover only one method or a very broad piece of the total subsystem.[[#References|<sup>[1]</sup>]] | |||
The basic object-oriented programming concepts of data encapsulation, interfaces, and polymorphism are all mechanisms that are present in the programming languages for similar reasons as the Protected Variations pattern.[[#References|<sup>[3]</sup>]] The variations that are addressed could be data type, data format, different calculations, different object types, etc. | |||
==Examples== | |||
===Document Plugin=== | |||
Consider the example of an editor that is designed to open and edit different file types, as shown in Figure 1. The document type can be implemented as a type in the core application and document plugins can be designed to implement the interface for specific document types. As new document types are required, the responsibility for supporting the variations is shifted externally to the document plugin. | |||
[[Image:DocPlugin.PNG]] | |||
''Figure 1. Document Plugin'' | |||
In this case, the Protected Variations pattern is similar to the Adapter pattern. | |||
===Medical Data Printing=== | |||
A medical data reporting system (Figure 2) is developed to take in different types of medical test results and print the results to a report. Different medical results may need to be handled in different ways, with some being formatted as numbers, some indicating a pass fail, some represented on a graph, etc. The medical result could be wrapped in an interface by the reporting system and implemented for each result type. | |||
[[Image:MedicalResults.PNG]] | |||
''Figure 2. Medical Report System'' | |||
[ | ==Advantages== | ||
•New implementations of a particular module to handle a specific variation can be added to the software without impacting client software.[[#References|<sup>[3]</sup>]] | |||
[3] | •Coupling between different parts of the software system are lowered.[[#References|<sup>[3]</sup>]][[#References|<sup>[4]</sup>]] | ||
[ | •The cost of changes to the system can be lowered by ensuring that new variations can be supported by only adding a new implementation of the interface.[[#References|<sup>[3]</sup>]] | ||
•Extensions required for new variations are easy to add.[[#References|<sup>[3]</sup>]] | |||
== | ==Disadvantages== | ||
• Increases the complexity of the design by requiring the interface and implementations to be separate | |||
• Forces the programmer to spend extra development time during initial programming development to ensure that the interface is generic enough to handle future implementations | |||
==References== | |||
[1] http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/ProtectedVariations.html | |||
[2] http://en.wikipedia.org/wiki/GRASP_(object-oriented_design)#Protected_Variations | |||
[3] http://www.objectsbydesign.com/books/larman_notes/6-DesignAndImplementationTechniques.html | |||
[4] Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Prentice Hall, Upper Saddle River, NJ, 2004 | |||
Latest revision as of 02:59, 1 December 2010
Protected Variations Pattern
Description
The Protected Variations pattern is a specific example of a GRASP design pattern. It is very broad in its scope. Any object that presents a potential instability within the system due to variations of type is implemented with an interface and polymorphism (discussed in chapter 3) is used to wrap the type.[2] The interface could be a small enough to cover only one method or a very broad piece of the total subsystem.[1]
The basic object-oriented programming concepts of data encapsulation, interfaces, and polymorphism are all mechanisms that are present in the programming languages for similar reasons as the Protected Variations pattern.[3] The variations that are addressed could be data type, data format, different calculations, different object types, etc.
Examples
Document Plugin
Consider the example of an editor that is designed to open and edit different file types, as shown in Figure 1. The document type can be implemented as a type in the core application and document plugins can be designed to implement the interface for specific document types. As new document types are required, the responsibility for supporting the variations is shifted externally to the document plugin.
Figure 1. Document Plugin
In this case, the Protected Variations pattern is similar to the Adapter pattern.
Medical Data Printing
A medical data reporting system (Figure 2) is developed to take in different types of medical test results and print the results to a report. Different medical results may need to be handled in different ways, with some being formatted as numbers, some indicating a pass fail, some represented on a graph, etc. The medical result could be wrapped in an interface by the reporting system and implemented for each result type.
Figure 2. Medical Report System
Advantages
•New implementations of a particular module to handle a specific variation can be added to the software without impacting client software.[3]
•Coupling between different parts of the software system are lowered.[3][4]
•The cost of changes to the system can be lowered by ensuring that new variations can be supported by only adding a new implementation of the interface.[3]
•Extensions required for new variations are easy to add.[3]
Disadvantages
• Increases the complexity of the design by requiring the interface and implementations to be separate
• Forces the programmer to spend extra development time during initial programming development to ensure that the interface is generic enough to handle future implementations
References
[1] http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/ProtectedVariations.html
[2] http://en.wikipedia.org/wiki/GRASP_(object-oriented_design)#Protected_Variations
[3] http://www.objectsbydesign.com/books/larman_notes/6-DesignAndImplementationTechniques.html
[4] Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Prentice Hall, Upper Saddle River, NJ, 2004