<?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>Eamonn Faherty &#187; creation method</title>
	<atom:link href="http://blog.eamonnfaherty.co.uk/tag/creation-method/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eamonnfaherty.co.uk</link>
	<description>technology enthusiast and public speaker</description>
	<lastBuildDate>Tue, 21 Jun 2011 10:14:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Actionscript3 Design Patterns:Creation Method</title>
		<link>http://blog.eamonnfaherty.co.uk/2009/11/11/actionscript3-design-patternscreation-method/</link>
		<comments>http://blog.eamonnfaherty.co.uk/2009/11/11/actionscript3-design-patternscreation-method/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 20:17:35 +0000</pubDate>
		<dc:creator>eamonn</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[creation method]]></category>
		<category><![CDATA[design patterns]]></category>

		<guid isPermaLink="false">http://blog.eamonnfaherty.co.uk/?p=242</guid>
		<description><![CDATA[Background Reading The factory method pattern The Problem? You have a complex object, which has a lot of arguments in its constructor or you always want to construct the object using different sets of parameters. Examples? Socket Manager How? The constructor of my complex object: public function ComplicatedButton(colour:uint, mouseOverColour:uint, mouseOutColour:uint) { _mouseOverColour = mouseOverColour; _mouseOutColour = mouseOutColour; setUpGraphics(colour); addEventListeners(); } The using of the creation method: var redButton : ComplicatedButton = ComplicatedButton.getRedButton(); var blueButton : ComplicatedButton = ComplicatedButton.getBlueButton(); Why is it good? ‚Ä¢ It is easy to understand; it is a simple pattern that needs little extra code. It buildsRead more


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><strong>Background Reading</strong><br />
The factory method pattern</p>
<p><strong>The Problem?</strong><br />
You have a complex object, which has a lot of arguments in its constructor or you always want to construct the object using different sets of parameters.</p>
<p><strong>Examples?</strong><br />
Socket Manager</p>
<p><strong>How?</strong><br />
The constructor of my complex object:</p>
<pre class=‚Äùbrush:as3‚Äù>
public function ComplicatedButton(colour:uint, mouseOverColour:uint, mouseOutColour:uint) {
	_mouseOverColour = mouseOverColour;
	_mouseOutColour = mouseOutColour;
	setUpGraphics(colour);
addEventListeners();
}
</pre>
<p>The using of the creation method:</p>
<pre class=‚Äùbrush:as3‚Äù>
var redButton : ComplicatedButton = ComplicatedButton.getRedButton();
var blueButton : ComplicatedButton = ComplicatedButton.getBlueButton();
</pre>
<p><strong>Why is it good?</strong><br />
‚Ä¢	It is easy to understand; it is a simple pattern that needs little extra code.  It builds on the singleton pattern, which is well known.<br />
‚Ä¢	Anyone using one of the creation methods to create the object is guaranteed to have an object in an identical state as the other users of the method.<br />
‚Ä¢	Objects that complicated or a lot of constructor parameters can be simplified.</p>
<p><strong>Why is it bad?</strong><br />
‚Ä¢	The class now has two responsibilities, the main purpose of the class plus the instantiation of its instances.<br />
‚Ä¢	The class can often grow in size as the creators in declared inside the class.  This makes the class harder to read for a developer.</p>
<p><strong>Further Reading</strong><br />
Read about the factory patterns. </p>
<p><strong>More</strong><br />
Creation methods are a great first move towards using factories.  Their concept is easy to grasp and doesn‚Äôt require much extra code.  The class can grow quite big, quite quickly but it is up to you to spot when the acceptable size has been passed for you to put your refactoring hat on.  I would use them when I have a graphical component that accepts integer colours as parameters or when I have components that need a lot of initial set up.  In the example above I have colours specified as integers.  To ensure that all of the buttons considered to be red or blue are the same shades of red or blue I protect users of my ComplicatedButton by adding creation methods with the colours hard coded.  Once I have more than one group of setups I would refactor, replacing the creation method with a factory method.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.eamonnfaherty.co.uk/2009/11/11/actionscript3-design-patternscreation-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

