[I'm doing an experiment. I'm writing this post using Writely and FireFox instead of using the CodeBetter Editor and IE6... BTW it didn't work... I guess I need to try something else]
Over the last month during the holidays and my own blogging block I have been reading a book on Patterns (Yes, DonXML, I finally did it). Mainly because I feel that I have reached a point with my knowledge in my Object Oriented journey that I really need to see some new ways of doing things. The book I had was
Professional Design Patterns in VB.NET. Admittedly I didn't read the whole book, but I did read the first chapter (which is about 70 pages if memory serves me) on the patterns covered. The rest of the book appears to give one practice in when to use the patterns. The book, BTW, does an excellent job of encouraging you to realize that each pattern has benefits and trade offs that you need to be aware of.
As I have looked at it, I have been contemplating some of my own personal projects' designs and how to make them bigger. I use the word "bigger" on purpose (and not to be grammatically incorrect or vague). I have discovered the power in large APIs (I won't call them systems). One of my temptations (and the point, finally) is to build these systems that read namespaces/classes from a config file or from the registry to easily extend the project. In fact I have seen this with ORMs as well as with some of the IOCs (I've been looking at those too) where you load assemblies based on a name in a config file. For instance
<sqlClasses>
<sqlClass>
MyClasses.SomeSubNameSpace.AnotherOne.SQLServerClass
</sqlClass>
</sqlClasses>
There would be some kind of factory that would read the config file and load up one more classes accordingly. It's very flexible/extensible. My brain has been taking in the "bigness" of all this. I can extend/deploy without recompiling anything else except the new extension. Testing just the new extension should be drop dead simple.
Part of me is fearful of this and part of me wants to do it everywhere. I guess I have the right perspective in that it is not something to be used everywhere... there are trade offs.