<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; structural</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/structural/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ColdFusion and Design Patterns</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-and-design-patterns</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-and-design-patterns#comments</comments>
		<pubDate>Sun, 05 Aug 2007 13:05:02 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[behavioural]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[creational]]></category>
		<category><![CDATA[dao]]></category>
		<category><![CDATA[data access object]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[facade]]></category>
		<category><![CDATA[factory]]></category>
		<category><![CDATA[fundamental]]></category>
		<category><![CDATA[gateway object]]></category>
		<category><![CDATA[model-view-controller]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[structural]]></category>
		<category><![CDATA[value object]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=311</guid>
		<description><![CDATA[In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.]]></description>
			<content:encoded><![CDATA[<p>As we all are well aware, ColdFusion, historically, has been a programming language that has allowed for &#8216;<a href="http://en.wikipedia.org/wiki/Spaghetti_code" title="Definition of Spaghetti Code" target="_blank" rel="nofollow">spaghetti code</a>&#8216; and poor application design practices. However, with the emergence and maturity of major frameworks, such as <a href="http://www.fusebox.org" title="Fusebox Framework" target="_blank" rel="nofollow">Fusebox</a>, <a href="http://www.model-glue.com" title="Model Glue Framework" target="_blank" rel="nofollow">Model Glue</a>, <a href="http://www.mach-ii.com" title="Mach II Framework" target="_blank" rel="nofollow">Mach-II</a> and <a href="http://www.coldspringframework.org" title="ColdSpring Framework" target="_blank" rel="nofollow">ColdSpring</a>, there has been a shift of emphasis from poor coding, to re-usable and extensible development practices. With the maturity of the language comes the search for standard ways of achieving certain tasks. This is where design patterns lend themselves.</p>
<p style="text-align: center"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/08/pattern-bring-together.jpg" alt="Design Patterns" /></p>
<p>In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved.</p>
<p>Not all software patterns are design patterns. Design patterns deal specifically with problems at the level of software design. Other kinds of patterns, such as architectural patterns, for example Model-View-Controller  (<acronym title="Model-View-Controller">MVC</acronym>), Implicit Invocation and Dependency Injection, describe problems and solutions that have alternative scopes. However, for ease, I generally consider software and architecture patterns under the design pattern scope.</p>
<p>Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.</p>
<p>Design patterns can be classified in terms of the underlying problem they solve. Examples of problem-based pattern classifications include Creational, Structural and Behavioural Patterns. Creational patterns, such as Singleton, deal with the creation of objects, Structural patterns, such as Facade, deal with the relationships between objects and Behavioural patterns, such as Observer, deal with the communication between objects.</p>
<p>The practical application of design patterns to ColdFusion applications is a new phenomenon and one which requires careful consideration. There is no sense in using a design pattern for the sake of using it, it must first solve the problem you have encountered. Common design patterns that I have used in my day-to-day development have included Singleton, Composite, Model-View-Controller (<acronym title="Model-View-Controller">MVC</acronym>), Data Access Object (<acronym title="Data Access Object">DAO</acronym>), Gateway, Bean and the Facade Pattern. These I will discuss in later articles.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>Further Reading:</strong></p>
<p>Alexander, Christopher; et al (1977). A Pattern Language: Towns, Buildings, Construction. New York: Oxford University Press. ISBN 0-195-01919-9.</p>
<p>Freeman, Elisabeth; Freeman, Eric; Bates, Bert (2004). Head First Design Patterns, paperback, O&#8217;Reilly. ISBN 0-596-00712-4.</p>
<p>Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software, hardcover, 395 pages, Addison-Wesley. ISBN 0-201-63361-2.</p>
<p>Shalloway, Alan; Trott, James (2001) Design Patterns Explained: A New Perspective on Object-Oriented Design, paperback, 368 pages, Addison-Wesley. ISBN 0-201-71594-5.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-and-design-patterns/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

