This
looks like the Singleton pattern to me:
page =
CreateObject("component","prototype.entity.systemsforge.PageSingleton").Init("#ThisPageFilePath#");};
Inside the
PageSingleton.cfc init() function you put the logic to check whether the page
exists in your application.page structure, initialize it if it doesn't exist,
and return it. That way the only place you ever reference the application scope
is in PageSingleton. I can post a clearer code example tomorrow when my brain is
less foggy, but this is the method I learned from others here and it has
worked well for me.
---------------------------------------------------------------Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Bell
Sent: Monday, February 27, 2006 7:58 PM
To: [email protected]
Subject: [CFCDev] Lazy Load - any patterns to encapsulate?Hi There,So, I have a page class that I lazy load to minimize initial application load time for large sites. However, for performance purposes, I store each page object once it has been created using the application scope (I don't have so many instances of the page class that this would be a problem in terms of memory and each one is fairly small).So, my calling code looked like this:<cfscript>// If the page doesn't exist in application scope, initialize it (lazy load)
if(not isDefined("Application.page.#ThisPageFilePath#"))
{"Application.page.#ThisPageFilePath#" = CreateObject("component","prototype.entity.systemsforge.Page").Init("#ThisPageFilePath#");};</cfscript>That looked plain wrong (seemed to be wrong for anything other than a page something - e.g. a page service to be worrying about whether or not a given page had been constructed or not), so I created an Application.PageService, provided it with a GetbyFilePath() method and put the above code in there.Is this going in the right direction?Best Wishes,
Peter----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to [email protected] with the words 'unsubscribe cfcdev' as the subject of the email.
CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (wwwcfxhosting.com).
An archive of the CFCDev list is available at www.mail-archive.com/[email protected]
You are subscribed to cfcdev. To unsubscribe, send an email to [email protected] with the words 'unsubscribe cfcdev' as the subject of the email.
CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com).
An archive of the CFCDev list is available at www.mail-archive.com/[email protected]
