A Strategy pattern is precisely what I am using in my current version of Naga (which aims to be a sort of "app server toolkit" as opposed to an out of the box functional app server). What I'm doing is pulling some ideas out of Indra2 (a PHP project I started and abandoned) and decoupling the backing store from the particular layout used, such as the filesystem, breaking it into two classes, Store and Schema (I'm a little iffy on the name "Schema"). Store just implements some filesystem-like operations like path parsing, "parent locations", and so forth, and schema implements the structure and searching operations, so one could use the same schema (such as one that climbs the INCLUDE_PATH or another that implements policies on component naming conventions) to search a variety of stores. Back when I wrote this in Indra2, I was aiming at Midgard compatibility, so I needed a RDBMS backend and a Midgard compatible schema. The same idea turns out to be useful for Naga because it fits well with the toolkit approach.
__________________________________________________ FREE voicemail, email, and fax...all in one place. Sign Up Now! http://www.onebox.com
