<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">Thanks for the follow-up, Carlus.&nbsp; Atomic Object's Presenter First pattern is indeed very interesting, and I kind of wish we had jumped into that during the MVP discussion but we probably would have run out of time for the Perl testing section.&nbsp; Here are a few other links related to the meeting I meant to share with the group at the end:<br><br><span style="font-weight: bold;">UI Design Patterns (Martin Fowler)</span><br>&nbsp;&nbsp;&nbsp; <a href="http://www.martinfowler.com/eaaDev/uiArchs.html">GUI Architectures</a><br>&nbsp;&nbsp;&nbsp; <a href="http://www.martinfowler.com/articles/injection.html">Inversion of Control Containers and the Dependency Injection pattern</a><br><br><span style="font-weight: bold;">Perl
 Testing</span><br>&nbsp;&nbsp;&nbsp; <a href="http://search.cpan.org/%7Emschwern/Test-Simple-0.70/lib/Test/More.pm%20">Test::More</a><br>&nbsp;&nbsp;&nbsp; <a href="http://search.cpan.org/%7Echromatic/Test-MockObject-1.08/lib/Test/MockObject.pm">Test::MockObject</a><br><br>And to answer one of Carlus' other questions about IoC (Inversion of Control) containers for perl I did find two that look interesting:<br>&nbsp;&nbsp;&nbsp; <a href="http://search.cpan.org/%7Estevan/IOC-0.29/lib/IOC.pm">IOC</a><br>&nbsp;&nbsp;&nbsp; <a href="http://search.cpan.org/%7Erhundt/Peco-1.0/lib/Peco/Container.pm">Peco::Container</a><br><br>My initial impression is that Peco::Container is a bit simpler than IOC.&nbsp; I haven't used either of them yet so I don't have much but the documentation to base that on.&nbsp; Neither of them do anything other than IoC, so a fair comparison may be between these two and Java's <a href="http://www.picocontainer.org/">PicoContainer</a> instead of Spring which
 is a full application framework in addition to an IoC container.<br><br>Thanks,<br>Jason Porritt<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Carlus Henry &lt;carlushenry@sagetech-llc.com&gt;<br>To: grand-rapids-pm-list@pm.org<br>Sent: Thursday, July 5, 2007 8:48:30 AM<br>Subject: [grand-rapids-pm-list] Model View Presenter<br><br>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).&nbsp; 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).&nbsp; I was very interested, however, in this MVP pattern.&nbsp; 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').&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 rel="nofollow" target="_blank" href="http://www.martinfowler.com/eaaDev/ModelViewPresenter.html">
pattern has been retired</a>
 by Martin Fowler.&nbsp; Well, I don't know if retired is the correct 'r'-word.&nbsp; Maybe it should say 'R'efactored instead.&nbsp; He has split up the pattern into the <a rel="nofollow" target="_blank" href="http://www.martinfowler.com/eaaDev/SupervisingPresenter.html">

Supervising Controller</a> and the <a rel="nofollow" target="_blank" href="http://www.martinfowler.com/eaaDev/PassiveScreen.html">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>"...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's more complex logic involved."<br><br><span style="font-weight: bold; text-decoration: underline;">Atomic Object Presenter First</span><br>On a related note, <a rel="nofollow" target="_blank" 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 rel="nofollow" target="_blank" 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 rel="nofollow" target="_blank" href="http://www.sagetech-llc.com">
www.sagetech-llc.com</a> | <a rel="nofollow" target="_blank" href="http://jdcarlflip.blogspot.com/">
http://jdcarlflip.blogspot.com/</a>
<div>_______________________________________________<br>grand-rapids-pm-list mailing list<br>grand-rapids-pm-list@pm.org<br><a target="_blank" href="http://mail.pm.org/mailman/listinfo/grand-rapids-pm-list">http://mail.pm.org/mailman/listinfo/grand-rapids-pm-list</a></div></div><br></div></div><br>
      <hr size=1>Looking for a deal? <a href="http://us.rd.yahoo.com/evt=47094/*http://farechase.yahoo.com/;_ylc=X3oDMTFicDJoNDllBF9TAzk3NDA3NTg5BHBvcwMxMwRzZWMDZ3JvdXBzBHNsawNlbWFpbC1uY20-">Find great prices on flights and hotels</a> with Yahoo! FareChase.</body></html>