<?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>javathreads.de &#187; Design Pattern</title>
	<atom:link href="http://javathreads.de/tag/design-pattern/feed/" rel="self" type="application/rss+xml" />
	<link>http://javathreads.de</link>
	<description>Blog rund um Java und Web Entwicklung</description>
	<lastBuildDate>Wed, 02 Nov 2011 10:37:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Design Pattern Quiz</title>
		<link>http://javathreads.de/2010/01/design-pattern-quiz/</link>
		<comments>http://javathreads.de/2010/01/design-pattern-quiz/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 05:00:12 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[Quiz]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2223</guid>
		<description><![CDATA[Wer sein Informatiker Wissen mal wieder pr&#252;fen m&#246;chte kann sich dem Design Pattern Quiz annehmen. Dabei nimmt man aus der linken Spalte ein Design Pattern und ordnet sich rechts per Drag &#038; Drop einer Design Pattern Kategorie zu. so geh&#246;rt z.B. das Design Pattern &#8220;Factory Method&#8221; der Kategorie &#8220;Creational Pattern&#8221; mit der Beschreibung &#8220;Creates an [...]]]></description>
			<content:encoded><![CDATA[<p>Wer sein Informatiker Wissen mal wieder pr&#252;fen m&#246;chte kann sich dem <a href="http://reboltutorial.com/cgi-bin/designpattern-quiz.cgi">Design Pattern Quiz</a> annehmen. Dabei nimmt man aus der linken Spalte ein Design Pattern und ordnet sich rechts per Drag &#038; Drop einer Design Pattern Kategorie zu. so geh&#246;rt z.B. das Design Pattern &#8220;Factory Method&#8221; der Kategorie &#8220;Creational Pattern&#8221; mit der Beschreibung &#8220;Creates an Instance of several derived classes&#8221; an und leuchtet nach dem Droppen gr&#252;n auf. Ist eine Zuordnung falsch wird der Balken rot aber man kann das Element wieder aufnehmen und es noch einmal probieren.</p>
<div class="singleImgDiv">
<a href="http://reboltutorial.com/cgi-bin/designpattern-quiz.cgi"><img src="http://javathreads.de/data/uploads/2010/01/DesignPatternQuiz.jpg" alt="Design Pattern Quiz" title="Design Pattern Quiz" width="600" height="320" class="alignnone size-full wp-image-2238" /></a>
</div>
<p>Eine nette kleine Spielerei um sein Design Pattern Wissen mal wieder aufzufrischen.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/01/design-pattern-quiz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Model View Controller in JSF &#8211; wo und was ist der Controller?</title>
		<link>http://javathreads.de/2009/10/model-view-controller-in-jsf-wo-und-was-ist-der-controller/</link>
		<comments>http://javathreads.de/2009/10/model-view-controller-in-jsf-wo-und-was-ist-der-controller/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 07:25:05 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2122</guid>
		<description><![CDATA[Das Model View Controller (MVC) Pattern ist wohl eines der bekanntesten Architekturmuster. So ziemlich jeder Informatiker muss sich damit auseinandersetzen und nicht selten ist es f&#252;r Berufsanf&#228;nger auch eine Frage im Bewerbungsgespr&#228;ch. Unterh&#228;lt man sich mit verschiedensten, auch schon sehr erfahrenen, Leuten dar&#252;ber ist es dennoch erstaunlich wie viele unterschiedliche Auslegungen es dazu gibt.
Vor allem [...]]]></description>
			<content:encoded><![CDATA[<p>Das <strong>Model View Controller</strong> (MVC) Pattern ist wohl eines der bekanntesten Architekturmuster. So ziemlich jeder Informatiker muss sich damit auseinandersetzen und nicht selten ist es f&#252;r Berufsanf&#228;nger auch eine Frage im Bewerbungsgespr&#228;ch. Unterh&#228;lt man sich mit verschiedensten, auch schon sehr erfahrenen, Leuten dar&#252;ber ist es dennoch erstaunlich wie viele unterschiedliche Auslegungen es dazu gibt.</p>
<p>Vor allem bei der Frage was denn der Controller, gerade bei Web-Frameworks, sei gehen die Meinungen oft auseinander. W&#228;hrend man z.b. FAT Client Anwendungen den Controller oft direkt als erstes schreibt und diesen dadurch sehr genau bestimmen kann gehen die Meinungen was denn der Controller in JSF Anwendungen ist deutlich auseinander. F&#252;r JSF Anwendungen geht z.B. unter anderem die Meinung um, dass die Managed Bean (oder bei Verwendung von Seam eine Seam Action / Spring eine Spring Bean) der Controller ist. Auch die Aussage, dass die JSP/JSF/XHTML Seite oder der Browser der Controller ist (denn der Controller nimmt laut Definition die Eingaben entgegen und leitet sie weiter) waren darunter.</p>
<p>Nun bin ich bei Recherchen zu Seam &#252;ber eine <a href="http://www.slideshare.net/yuvalb/jsf-and-seam">Pr&#228;sentation von Roi Aldaag</a> gestolpert und habe dabei folgende, meiner Meinung nach wirklich passende, MVC Beschreibung f&#252;r JSF gesehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/10/MVCJSF.jpg" alt="Model View Controller in JSF" title="MVC in JSF" width="630" height="608" class="alignnone size-full wp-image-2131" />
</div>
<p>Man sieht darin, dass der Controller in einer JSF Anwendung aus mehreren Teilen besteht. Zum einen das <code>FacesServlet</code>, welches jeden Request entgegennimmt und initial verarbeitet. Je nach Situation wird anschlie&#223;end die <code>faces-config.xml</code> verwendet um an das Model weiterzuleiten oder die in JSF m&#246;glichen Event Listener oder Action Handler aufgerufen.</p>
<p>Somit besteht der <strong>Controller</strong> aus drei Teilen:</p>
<ul>
<li>Front-Servlet (<code>FacesServlet</code>)</li>
<li>Konfiguration (<code>faces-config.xml</code> oder <code>pages.xml</code> in Seam Anwendungen)</li>
<li>Event Listener (z.B. ValueChangeListener)</li>
<li>Action Event (ausgel&#246;st durch <code>h:commandButton</code> und <code>h:commandLink</code> Actions)</li>
</ul>
<p>Gerade das in JSF vorhandene Event Modell sowie die Action Events bringen JSF noch viel n&#228;her an das MVC Pattern als die bisherigen Web-Frameworks. </p>
<p>Nur der Vollst&#228;ndigkeit halber im folgenden noch eine kurze Erl&#228;uterung zu den Teilen Model und View:<br />
Die <strong>View</strong> in einer JSF Anwendung beinhaltet:</p>
<ul>
<li>Component Tree (JSF Komponentenbaum)</li>
<li>Component Model (Java Beans als Unterst&#252;tzung f&#252;r Komponenten)</li>
<li>Delegates (Konverter, Validator oder Renderer)</li>
<li>Resources (JSP, XML, Properties)</li>
</ul>
<p>Das <strong>Model</strong> im MVC ist nicht ausschlie&#223;lich das Domain Model oder Entity Modell gemeint. Mit Modell meint man die komplette Business Logik in einer Anwendung:</p>
<ul>
<li>Pojos (bei Plain JSF / Seam Pojo Anwendung)</li>
<li>EJB, Entity Beans (bei einer JEE Anwendung)</li>
</ul>
<p>Der Screenshot der MVC Umsetzung in einer JSF Anwendung ist aus der folgenden Pr&#228;sentation mit dem Titel &#8220;JSF and Seam&#8221;:</p>
<div style="text-align:center">
<object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jsfseam-1216326203414524-8&#038;stripped_title=jsf-and-seam" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jsfseam-1216326203414524-8&#038;stripped_title=jsf-and-seam" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
</div>
<p><br/><br />
Obwohl das Thema wohl wirklich ein alter Hut ist und der ein oder andere es wohl schon zum xten mal durchgekaut hat fand ich es wichtig MVC im Rahmen von JSF noch einmal aufzuzeigen ohne direkte Widerrede zu erhalten ;). In Meetings und pers&#246;nlichen Diskussionen dar&#252;ber brechen wir meistens ab da man sich doch nicht einigen kann, die Meinungen weit auseinander gehen und die Gem&#252;ter am Ende sehr erhitzt sind. Also falls jemand eine erg&#228;nzende oder gar total andere Meinung zu MVC hat darf er sich in den Kommentaren auslassen &#8211; es wird nichts zensiert ;).</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/10/model-view-controller-in-jsf-wo-und-was-ist-der-controller/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

