The document discusses design patterns and form processing. It provides examples of applying different design patterns like template method and composite to refactor form processing code for improved structure and separation of concerns. It also discusses what design patterns are, their benefits for preventing "defactoring" and improving communication, and gives an overview of prominent design pattern works and resources.
1 of 21
Download to read offline
More Related Content
Design Patterns and Form Processing
1. cf.OBJECTIVE(ANZ)
Design Patterns and Form Processing
Jaime Metcher
Software Architect, Centre for Innovation in Professional Learning, University of Queensland
2. About me
B.Sc (maths)
Aerial survey software (in the 80's!)
Kids
LAN wrangler at UQ
Coldfusioneer at Med-E-Serv
Archi-thingie back at UQ
B.Sc (maths)
Aerial survey software (in the 80's!)
Kids
LAN wrangler at UQ
Coldfusioneer at Med-E-Serv
Archi-thingie back at UQ
OUTPUT 2500AD
ORG 2000H
MOV DX,0FFE6H
MOV AX,82H
OUT DX,AL
NEXT:MOV AX,3000H
MOV BX,0000H
CALL DISP
NOT AL
MOV 3001H,AL
MOV BX,0100H
CALL DISP
JMP SHORT NEXT
DISP:PUSH AX
MOV CX,1
CALL FAR 0FF00:0B12H
POP AX
RET
END
3. About you
Your team lead is bugging you
You are the team lead and you want to bug your
juniors:
What do you do that's so great?
How do you teach that?
You want to pad your CV
You know all about patterns and you're here to
heckle
You thought this was the Railo talk
4. Outline
Design Patterns by Example
Template method
Composite
Design Patterns World Tour
Architecture
Software engineering
Education
Conclusion
Motherhood statements
Resources
Questions
5. Example form processing
Simple
See code sample - simple
6. Example form processing
Let's componentize a bit...
See code sample - simple.cfc
7. Example form processing
Add some functionality:
Support multiple forms on a page
Detect incomplete form transmission
See code sample - bettercfc
8. Example form processing
Now refactor out some common functionality:
See code sample - bettercfcrefactored
9. Example form processing
A little less procedural, just for fun:
See code sample - templatemethod
10. Template method
if (isSubmitted() and validated()) {
commit();
}
Other ways to do this?
Define the skeleton of an algorithm in an operation, deferring some
steps to subclasses. Template Method lets subclasses redefine
certain steps of an algorithm without changing the algorithm's
structure.
- Design Patterns: Gamma et al. (aka GoF)
11. Example form processing
OK, let's separate some concerns:
See code sample - templatemethodrefactored
12. Example form processing
More guts, more glory
See code sample composite
13. Composite
Compose objects into tree structures to represent part-whole hierarchies. Composite lets
clients treat individual objects and compositions of objects uniformly
- Design Patterns: Gamma et al. (aka GoF)
myCompositeFormGuts = CreateObject("component",
"compositeFormGuts").init("puttin_it_togetha");
myCompositeFormGuts.addChild(myFormGuts1);
myCompositeFormGuts.addChild(myFormGuts2);
15. And why should I care?
Prevent 'defactoring'
Hey, I noticed there was this totally unnecessary inheritance lying around so I
refactored it out
Communication
Why do we have this one crazy class that has the same interface as all the
others but is completely different under the hood?
Education
16. World tour - architecture
Alexander's A Pattern Language - read it!
Light on two sides:
When they have a choice, people will always gravitate to those rooms which
have light on two sides, and leave the rooms which are lit only from one side
unused and empty.
Therefore:
Locate each room so that it has outdoor space outside it on at least two sides,
and then place windows in these outdoor walls so that natural light falls into
every room from more than one direction.
17. World Tour Software Engineering
GoF Design Patterns
Singleton
Iterator
Decorator
Martin Fowler PoEAA
Front Controller
Gateway
Single Table Inheritance
Gregor Hohpe Enterprise Integration Patterns
Message Endpoint
Publish-Subscribe Channel
Guaranteed Delivery
18. World tour - education
CIPL (my lot)
Chunking & toggling
Peer leader
Hypothetical professionals
E-LEN project
Coherence principle
Provide personal identity information
19. Motherhood statements
Patterns are primarily about communication
Patterns are not templates or rules
Pattern use is all about professional judgement
A pattern by definition is not new
20. Resources
Books
A Pattern Language: Towns, Buildings, Construction
Christopher Alexander, Sara Ishikawa, Murry Silverstein
ISBN 978-0195019193
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
ISBN 978-0201633610
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
Gregor Hohpe & Bobby Woolf
ISBN 978-0321200686
Patterns of Enterprise Application Architecture
Martin Fowler
ISBN 978-0321127426
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
Craig Larman
ISBN 978-013148906
Websites
E-LEN http://www2.tisip.no/E-LEN/patterns_info.php
Some patterns in the education field
CIPL http://www.uq.edu.au/cipl
No patterns here yet :(
http://www.daimi.au.dk/~apaipi/workshop/nyartikel.pdf
Article by Aino Corry on patterns vs language constructs. See also her talk on patterns in functional languages on InfoQ.