Transcript Slide 1

Design Patterns and
ColdFusion: Exploring Object
Based Programming
Dan Blackman
www.muddbrick.com
Dan Blackman
• Founder and Senior Consultant –
– Mudd Brick Inc, Dallas, Tx
• Certified Adobe Instructor – Flex,
ColdFusion, Flash
• Experience – 12 Years ColdFusion, Flash
and Flex
Setting Expectations
• I am not a Architect but I play one on TV
• My name does not end in Lehman, Forta, Majano etc.
• There will be NO debate here today…Just
demystification of a cryptic topic.
• Let’s have an interactive dialog
Objectives
•
•
•
•
•
Design Patterns: The Why?
Identification of Core Design Patterns
Frameworks
Shut up and Show me some code!!!
Summary and Questions
Design Patterns:
The Why!?
What is the main goal of building
ColdFusion/ Flex Applications?
Design Patterns: The Why?
SOA –Service Oriented Architecture
Mind the Gap - Marcel Boucher
http://blogs.adobe.com/mtg/2008/04/implementing_soa_principals_in.html
Duane Nickul, et al
http://www.adobe.com/enterprise/pdfs/Services_Oriented_Architecture
_from_Adobe.pdf
Design Patterns: The Why?
SOA –Service Oriented Architecture
The ultimate value of SOA is the ability to combine
automated business services to create new market
offerings that may reduce time-to-market and
development costs."
Terry Borden and Bill Mitlehner
Design Patterns: The Why?
SOA
Design Patterns: The Why?
• FACT: Refactoring patterns into existing
code is much more difficult than writing an
application correctly the first time.
Design Patterns: The Why
• Scalability – Can your application support a
large number of concurrent users?
• Maintainability – the everyday fight we have with
our inner-self and management.
• Reusability – Break down your application into
small chunks. Forces us to build structure into
our applications.
Design Patterns: The Why
Let’s look at some Spaghetti Code:
Most of you have written code like this!!!
Design Patterns: The Why
MORAL of the STORY?
An Architect does not construct a building with out a
blueprint,
Why are YOU then, building applications without a solid
foundation?
Me
Identification of Core
Design Patterns
What are design patterns and how
do I use them?
Identification of Core Design Patterns
– Design Pattern Definition:
design pattern is a general reusable solution to a
commonly occurring problem in software design. A
design pattern is not a finished design that can be
transformed directly into code.
– In short, design patterns provide a foundational
blueprint for software development.
– Patterns are NOT code, they are designs we apply to
our application code.
Identification of Core Design Patterns
– Core Patterns:
•
•
•
•
•
•
•
MVC Design Pattern
Singleton Pattern – Application.cfc
Service Object Pattern
Front Controller/ Command Patterns
Business Delegate Pattern
DAO/ Gateway Patterns
Value/ Data Transfer Object Pattern
Identification of Core Design Patterns
Identification of Core Design Patterns
– Model – View – Controller
• Allows for a clear separation between User Interface Objects and
the underlying data model
• Elements of MVC include
– Model, which manages data elements and responds to queries
about its state and to instructions to change its state
– View, which manages a rectangular area of the display and is
responsible for presenting the data
– Controller, which handles events from the user and system that
affect the model and view
• These application components allow the separation of the following
– User interaction
– Modeling of the external world (data)
– Visual feedback to the user
Identification of Core Design Patterns
– Singleton Design Pattern
– Used to restrict the instantiation of a class to a single
instance.
– Application.cfc - OnApplicationStart
Identification of Core Design Patterns
– Service Objects
• Allows Encapsulation of Business Logic in a single service
interface.
• LoginService.cfc
• EmailService.cfc
• ZipValidationService.cfc
Identification of Core Design Patterns
– Front Controller/ Command Patterns
• The Front Controller is a single component created to handle
all system requests.
• Controls and coordinates processing of each user across
multiple requests.
• Employs Command (workers) in order to carry out requests.
• Commands can be reused throughout the application across
multiple Views
Identification of Core Design Patterns
– Business Delegate Pattern
• A simple class that acts to create separation between the
Presentation/ Web tier client (HTML/ RIA) and the business
tier on the back-end.
• Provides remote access from Web clients to important
business tier services.
Identification of Core Design Patterns
– DAO/ Gateway Patterns
• DAO – Data Access Object – Provides CRUD operation
methods for specific business objects.
• Table Data Gateway (Fowler) – Provides a similar set of data
access methods. Commonly used in ColdFusion
applications for bulk data access. (i.e. queries that return
large data sets)
Identification of Core Design Patterns
– Data Transfer / Value Objects
• Also called “beans”, this pattern provides a way to transfer
data back and forth to the Web Client tier
• Value Objects are NOT packaged exactly like Database
tabels
• Designed using a UML Class diagram
Frameworks
Various Frameworks implement design patterns:
ColdFusion
•
•
•
•
ColdBox
Mach-II
Model-Glue
ColdSpring
Flex
•
•
•
•
•
Pure MVC
Cairngorm
Model-Glue
Swiz
Mate
Shut up and show me some code!!!
When building an application, where do you start?
– View  Controller  Model?
– Model  Controller  View
– You have a database – Where do I go from here!?
– Let’s check out a real scenario!
Questions?
Dan Blackman
Mudd Brick Inc.
Dallas, TX
[email protected]