sf.kurthogentogler.com
This application incorporates a Fat Model Skinny Controller paradigm. The heart of an application lies in the Model and Model Resources; so I briefly discuss the application architecture here. Choosing this paradigm really allows for scalability, ease of maintenance, ease of design (once you wrap you head around it), and testing.
To circumvent the problems with the direct inheritance model (which is the most popular- (think Ruby on Rails) I use a Has-a relationship (composition) Model.
Specifically the Advantages of this model are:
1. It does not break the OO inheritance principle
2. Abstracts database from Model
3. It is easier to test without the need for a database
The Disadvantages of this model are:
1. Is more intricate to implement
2. Has more files to manage
This type of Model is a little more complex to implement but has some real advantages over the direct inheritance route. With this method you can test your Models without needing a database, making unit tests easy to run regularly. Also, if I need to replace my data source with a web service, I can now easily do that. By following the OO principle of composition there are many advantages.
You do have to do a little work to get everything working, but once you have the infrastructure you are ready to go. From here I have a lot of area to increase the abstraction and scale the application.