On Apr 7, 2011, at 8:09 AM, Dev WO wrote:

> Hello Andrew,
> 
>> 
>> Hi Xavier;
>> 
>> I would suggest not putting the formatter in the EO class because the EO is 
>> model layer and the formatter really belong as part of the display logic -- 
>> blurring the two eventually ends up causing design problems in the long-haul.
> 
> I completely agree with this:)
> 
>> I think in the past when faced with this situation, I added accessors to the 
>> components' controllers' super-class which then "gets or creates" a 
>> formatter for a particular purpose (data quantity format / timestamp / 
>> currency etc...) which is cached in the "user info" in the WOContext 
>> instance for the current request-response cycle.  This approach allows you 
>> to re-use the formatters for the request-response cycle and then just allows 
>> them to be garbage collected at the end of the cycle.
> 
> That means I would have as much formatter instances as there's a request for 
> a specific component/page. It's probably not a big deal, it just feels 
> strange to me to have something that is application-wide used in a component 
> part.

A compared to String or Integer or... :-)  Formatters should be lightweight 
objects that can be created, used, and discarded at will.  Caching and re-using 
them is just an easy and obvious optimization.  Also, some formatters ARE 
thread safe.  It is the date formatting ones that seem to be a problem.


> Would it be a better practice to implement those formatter in a component 
> super-class or have them as an interface for the components that need them?

They would have to be static to be in an interface and that is not thread safe. 
 :-)  I'd do what Andrew suggests or just create what you need in your 
component constructor.  If it is a stateless app, just keep the page cache very 
small and you don't have to worry about memory.


Chuck


>> cheers.
>> 
>>> Sorry to jump into this to add another question:)
>>> But I would have expected the formatter to not be an issue as it's not
>>> actually writing data.
>>> If you have a stateless app (like full of DA), how would you handle that
>>> as you can actually put the formatter in Session?
>>> Do you have to put the formatter inside the EO class?
>> 
>> -- 
>> Andrew Lindesay
>> www.silvereye.co.nz
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40anazys.com
>> 
>> This email sent to webobje...@anazys.com
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
> 
> This email sent to ch...@global-village.net

-- 
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.    
http://www.global-village.net/products/practical_webobjects







Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to