Patterns

Document Sample
Patterns
Shared by: rogerholland
Stats
views:
121
posted:
8/28/2009
language:
English
pages:
22
Dept. of Computer Science, The University of Texas, Dallas



Patterns

What are Patterns? Software Patterns



Design Patterns

Architectural Patterns J2EE Patterns: Still Evolving ...



Lawrence Chung



What are Patterns?



"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice."



Christopher Alexander



Lawrence Chung



Software Patterns v A Dictionary Definition

A discernible coherent system based on the intended interrelationships [Webster Collegiate] of component parts



v Kinds of Software Patterns



Systems Engineering



Systems Spec.



Context



(Sw) Reqs. Analysis



SRS



Problem



(Sw) Arch. Design



SADS



SAD



(Sw) Detailed Design



SDDS



(SD) Design Implementation

Program



Idioms



Lawrence Chung



Design Patterns v A key source w Elements of Reusable Object-Oriented Software

[Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides] (GoF)



w

A catalogue of 23 design patterns



v Four essential elements

Name, Problem, Solution, Consequences



v Categories of design patterns w ( ( ( w

By purpose (what does a pattern do?) Creational: Structural: concerns the process of object creatrion concerns the composition of classes or objects Behavioral: concerns the ways in which classes or objects interact and distribute responsibility (e.g., algorithms and flow of contrl) By scope (Is the pattern for classes or instances?)

Lawrence Chung



Design Patterns: An Example v

` Model: application object ` View: screen presentation ` Controller: the way the UI reacts to user input view H

b c

        ¡   ¡   ¡   ¡   ¡ ¡   ¡   ¡   ¡   ¡ ¡   ¡   ¡   ¡   ¡        



MVC (Model-View-Controller) classes for UI (in Smalltalk-80)



view P



a a b c



view = H

¡   ¡   ¡   ¡   ¡ ¡   ¡   ¡   ¡   ¡ ¡   ¡   ¡   ¡   ¡       ¡   ¡   ¡   ¡   ¡ ¡   ¡   ¡   ¡   ¡    



a = 50% b = 30% c = 20%



view = P mouse controller C microphone model M



keyboard



w Advantages



( decoupling of views from models

applicable to a more general problem: decoupling objects so that changes to one can affect any number of others without requiring the changed object to know details of the others = Observer

Lawrence Chung



OBSERVER

Intent



Object 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 Known As

Dependents, Publish-Subscribe



Motivation

... You don’t want to achieve consistency by making the classes tightly coupled, because that reduces their reusability ...



Applicability

Use the Observer pattern in any of the following situations:

(



When an abstraction has two aspects, one dependent on the other .... lets you vary and reuse them independently When a change to one object requires changing others, and you don’t know how many objects need to be changed When an object should be able to notify other objects without making assumptions about who these objects are



(



(



Lawrence Chung



OBSERVER

Structure

observers



Object Behavioral



Subject Attach(Observer) Detach(Observer) Notify()

for all o in observers{ o->Update() }



Observer Update()



ConcreteObserver

subject



ConcreteSubject GetState() subjectState

return subjectState



Update() observerState



observerState = subject->GetState()



Participants

( Subject: knows its observers. Any number of Observer objects may observe a subject provides an interface for attaching and detaching Obsever objects ( Observer: defines an updating interface for objects to be notified of changes in a subject ( ( ConcreteSubject: stores state of interest to ConcreteObserver objects; sends a notification to its observers when its state changes ConcreteObserver: maintains a reference to a ConcreteSubject object; stores state that should stay consistent with the subject’s implements Observer updating interface to keep its state consistent w subject’s Lawrence Chung



OBSERVER

Collaborations



Object Behavioral



... The following interaction diagram illustrates the collaborations betw a subject & two observers:



aConcreteSubject SetState() Notify()



aConcreteObserver



anotherConcreteObserver



Update() GetState() Update() GetState()



Consequences

( Abstract coupling betw Subject & Observer: All a subject knows is that it has a list of observers. ( Support for broadcast communicaiton ( Upexpected updates: one subject operation may cause a cascade of updates to observers & their dependent objects



Implementation

Mapping subjects to their observers; Observing more than one subject; Who triggers the update?; Dangling references to deleted subjects; ... Lawrence Chung



Design Patterns: An Example v

` Model: application object ` View: screen presentation ` Controller: the way the UI reacts to user input view H view P

a b c a b c

¢ ¢ ¢ ¢ ¢ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ £ ¢ ¢ ¢ ¢



MVC (Model-View-Controller) classes for UI (in Smalltalk-80)



¢



£



¢



£



¢



£



¢



£



¢



£



¢



£



¢



£



¢



£



¢



£



¢



£



a = 50% b = 30% c = 20%



view = H keyboard view = P mouse microphone controller C

¢ ¢



model M



w Advantages



( decoupling of views from models

applicable to a more general problem: decoupling objects so that changes to one can affect any number of others without requiring the changed object to know details of the others = Observer



( nesting of views (control panel of buttons of buttons of ...)

applicable to a more general problem: group objects & treat the group like an individual object



( Controller for changing the way a view responds to user input

without changing the visual rep.



= Composite



applicable to a more general problem: replace an algorithm statically or dynamically



( specify a default class (for controller)

add scrolling to a view

= Decorator



= Factory Method

Lawrence Chung



= Strategy



Composite

Intent



Object Structural



Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.



Motivation

... Graphic applications like drawing editors and schematic capture systems let users build complex diagrams out of simple components. The user can group components to form larger components, which in turn can be grouped to form still larger components ...



Applicability

Use the Composite pattern when

( (



you want to represent part-whole hierarchies of objects you want to clients to be able to ignore the difference between compositions of objects and indificual objects. Clients will treat all objects in the composite structure uniformly.



Lawrence Chung



Composite

Structure



Object Structural



Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

Client

Operation() Add(Component) Remove(Component) GetChild(int)



Component



children



Leaf

Operation()



Composite

Operation() Add(Component) Remove(Component) GetChild(int)

forall g in children g.Operation();



A typical Composite object structure might look like this:

aComposite



aLeaf



aLeaf aLeaf



aComposite



aLeaf



aLeaf



Lawrence Chung



Composite

Motivation (continued)



Object Structural



Graphic

Draw() Add(Graphic) Remove(Graphic) GetChild(int)



graphics



Line

Draw() Draw()



Rectangle



Text

Draw()



Composite

forall g in graphics g.Draw();



Operation() Add(Component) Remove(Component) GetChild(int)



add g to list of graphics



Lawrence Chung



STRATEGY

Intent



Object Behavioral



Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.



Also Known As

Policy



Motivation

Many algorithms exist for breaking a stream of text into lines. Hard-writing all such into the classes that require them isn’t desirable for several reasons:

(



Inclusion of the linebreaking code in the client makes it more complex bigger and harder to maintain, esp. if to support multiple linebreaking algorithms Differnt algorithms will be appropriate at different times difficult to add new algorithms and vary existing ones when linebreaking is an integral part of the client



( (



Applicability

Use the Strategy pattern when ( many related classes differ only in their behavior ( need different variants of an algorithm, implemented as a class hierarchy ( an algorithm uses data that the client shouldn’t know about

Lawrence Chung



Strategy

Structure

Context

ContextInterface()

strategy



Object Behavioral



Strategy

AlgorithmInterface()



ConcreteStrategyA

AlgorithmicInterface()



ConcreteStrategyB

AlgorithmicInterface()



ConcreteStrategyC

AlgorithmicInterface()



Participants

Strategy (Compositor)

declares an interface common to all supported algorithms. Context uses this interfce to call the algorithm defined by a ConcreteStrategy



ConcreteStrategy (SimpleCompositor, TeXCompositor, ArrayCompositor)

implements the algorithm using the Strategy interface



Context (Composition)

configured with a ConcreteStrategy maintains a referece to a Strategy object may define an interface that lets Strategy access its data



Lawrence Chung



Design Pattern Space

Purpose Creational Scope Class Factory Method Structural Adapter (class) Behavioral Interpreter Template Method Object Abstract Factory Builder Prototype Singleton Adapter (object) Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor



Lawrence Chung



Architectural Patterns v Recall:

A =



v Pattern Matching in IQ Test

3 choose the closest match to



A.



B.



C.



D.



v Topological View of Architectural Patterns

P (A) =



v Modeling View of Architectural Patterns

P (A) =

Lawrence Chung



J2EE

Java 2 Platform Enterprise Edition



v Vision

3 an open standard 3 anything Java-related 3 for implementing and deploying component-based enterprise applications



v Commerical platforms

3 WebLogic (BEA Systems) 3 WebSphere (IBM) 3 iPlanet (Sun & NetScape) 3 JBoss (open source)



v Reference application

3 Pet Store



v Services

3 EJB components 3 JDBC API 3 CORBA technology 3 Java Servlets API 3 XML technology

Lawrence Chung



J2EE Distributed Multitiered Applications

J2EE Application1

Application Client/Applet

(Dynamic) HTML/ WML/.. Webpages



J2EE Application2 Client Tier Client Machine



Java Serverlet/ JSP pages Enterprise Beans ERP/TP/... Database Enterprise Beans



Web Tier J2EE Server Machine Business Tier



EIS Tier



Database Server Machine



v



EJB: server-side component containing the business logic of an application. The application clients invoke their methods



http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Overview2.html#68378

Lawrence Chung



J2EE 5-Tier Model & Design Patterns

J2EE Application1 Application2 J2EE



5-Tier Model

Client Tier



Application

(Dynamic) HTML/



Client Tier



Client Machine



Client/Applet

WML/.. Webpages



Java Serverlet/ JSP pages



Presentation Tier

Web Tier J2EE Server Machine



Enterprise Beans Beans



Enterprise Business Tier



Business Tier



Integration Tier

ERP/TP/... Database



J2EE Design Patterns



EIS Tier



JMS/JDBC/...



Database Server Machine



Resource Tier

DB/external-resources * JMS = Java Message Service API; * JDBC = Java Database Connectivity API;



http://java.sun.com/features/2001/03/patterns.html

Lawrence Chung



J2EE Design Patterns

Wireless Administrator Supplier B2B agent Customer



Classic Web



Customer



HTML view



WML view



JFC/Swing view



XML-based Web service



Enterprise Information System A Solution: Model-View-Controller Architecture



The problem: Supporting Multiple Enterprise Clients



v Design Patterns Catalog

Intent

Accelerate read-only data by not using enterprise beans



Pattern



Data Access Object



Fast-Lane Reader



Front Controller



Page-by-Page Iterator Session Facade Provide a unified, workflow-oriented interface to a set of enterprise beans Value Object



http://java.sun.com/j2ee/blueprints/design_patterns/catalog.html

Lawrence Chung



Patterns: Still Evolving ...



v Architectural Patterns:

cf. the Strategy design pattern for algorithms



3 Not about detailed design:



v Anti-Patterns:

from there to a good solution



3 Those that describe a bad solution to a problem which resulted in a bad situation.



3 Those that describe how to get out of a bad situation and how to proceed



v Problem Patterns:

organizational/enterprise, business rules/logic, agent interaction, goal interaction task, resource usage structural (entity, activity, constraints), behavioral, nfr



v OO Software Framework [GoF]:

a set of cooperating classes that make up a reusable design for a specific class of software



v Pattern Mining: v QWAN (Quality Without A Name) [Alexander]:

universally recognizable aesthetic beauty and order; recursively nested centers of symmetry and balance life and wholeness; resilience, adaptability, and durability human comfort and satisfaction; emotional and cognitive resonance Lawrence Chung




Share This Document


Related docs
Other docs by rogerholland
Key performance indicators
Views: 56  |  Downloads: 6
Creating Matching Questions
Views: 4  |  Downloads: 1
Find the derivative and simplify
Views: 53  |  Downloads: 0
RICHARD K. MIN
Views: 22  |  Downloads: 0
Standardized Testing
Views: 43  |  Downloads: 1
Resume
Views: 42  |  Downloads: 2
FLOW CHART PROBLEM MANAGEMENT REVIEW
Views: 10  |  Downloads: 0
PEOPLE
Views: 11  |  Downloads: 0
Chapter IX Latin Prefixes
Views: 12  |  Downloads: 1
by registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!