> My question would be how are parts of a program > supposed to talk to this > Options object? > 2 cents: > - I could instantiate an Options object and then > pass it to each object > as one of its initialization parameters Does it make sense for each object to contain an "Options"? It seems like "Options" could be one of many ways for an object to be populated with state. Each object shouldn't have to know about the many possible ways. I would keep that knowledge outside of the objects. > - I could instantiate an Options object and place > it in $OPTIONS so that > each object could access that object directly This combines the object coupling of the first option with temporal coupling ($OPTIONS has to be valid before the objects try to use it). > - I could instantiate an Options object and store > it in a Resources class > using a class method, and then use another class > method to read the > options back, e.g. Resources.options(...) > - I could make Options not instantiatable at all > and just have class methods > to load and access the options > Your problem, IMO, isn't about instance vs. class methods. It's about coupling. I don't think the previous two possibilities address that. What kind of data will be stored in the "Options" object? What do the individual classes need from it? It sounds like you are creating a static configuration mechanism. Another coupling-related fear that I would have is that, when you pass a full "Options" into an object, you are probably giving that object access to any of the data in "Options". So, you're creating possible dependencies between every object that uses "Options" and every possible "Option". The solution I would propose is that you keep "Options" outside of any objects that don't specifically need it. Then, from a controller object (probably the same one that actually instantiates each object), you can read "Options" and pass any required data to the objects that need it. With this approach, "Options" doesn't know about your objects, and your objects don't know about "Options". This gives me my second opportunity to reference http://www.c2.com/cgi/wiki?LawOfDemeter today. :) Opinions? __________________________________________________ Do You Yahoo!? Yahoo! Auctions - buy the things you want at great prices http://auctions.yahoo.com/