For those of you that did not come to the last Perl User Group meeting, you missed a great presentation which prompted a wonderful discussion on the Model-View-Presenter Pattern (MVP).  Primarily being a J2EE developer and with many years of experience with the Struts Framework, I am very familiar with the Model-View-Controller (MVC).  I was very interested, however, in this MVP pattern.  This is mostly due to the thick client application development that I have been doing lately.
<br><br>During the meeting, a lot of questions were raised regarding this pattern, and Jason Porrit was very patient with all of us (touche&#39;).&nbsp; After the meeting, I decided to do a little more investigation, and found the following:
<br><br><span style="font-weight: bold; text-decoration: underline;">Martin Fowler Retires Model View Presenter Pattern</span><br><br>Yes.&nbsp; Believe it or not, this <a href="http://www.martinfowler.com/eaaDev/ModelViewPresenter.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
pattern has been retired</a>
 by Martin Fowler.&nbsp; Well, I don&#39;t know if retired is the correct &#39;r&#39;-word.&nbsp; Maybe it should say &#39;R&#39;efactored instead.&nbsp; He has split up the pattern into the <a href="http://www.martinfowler.com/eaaDev/SupervisingPresenter.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

Supervising Controller</a> and the <a href="http://www.martinfowler.com/eaaDev/PassiveScreen.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Passive View</a>.&nbsp; After reading both of the patterns, they sound very similar in detail and in practice.&nbsp; In the Passive View you put all of the widget population logic into the Presenter.&nbsp; All logic is pushed on the Presenter including the population of text fields or any other widgets available on the View.&nbsp; In the Supervising Controller, you push most of the logic onto the Presenter, but leave some of the logic of populating widgets in the View.&nbsp; Martin states:
<br><br>&quot;...the essence of a good <i>Supervising Controller</i> is to do as
                little as possible. Let the view handle as much as possible and
                only step in when there&#39;s more complex logic involved.&quot;<br><br><span style="font-weight: bold; text-decoration: underline;">Atomic Object Presenter First</span><br>On a related note, <a href="http://atomicobject.com/">
Atomic Object</a> also has their own variation of the MVP Design pattern called Presenter First (PF).&nbsp; After reading an article from Better Software magazine (referenced from their <a href="http://atomicobject.com/pages/Presenter+First">
PF resources</a>), I find this design pattern very attractive as well.&nbsp; What most attracts me is the concept of linking different PF triads in order to orchestrate behavior and a process.&nbsp; Please refer tot he Better Software article for more information on this.
<br><br>Overall, I owe a big thanks to Jason Porrit for inspiring me to learn more about this design pattern.&nbsp; I look forward to hearing him present in the future.<br>-- <br>Carlus Henry<br>SageTech L.L.C.<br><a href="http://www.sagetech-llc.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
www.sagetech-llc.com</a> | <a href="http://jdcarlflip.blogspot.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://jdcarlflip.blogspot.com/</a>