Storefront

Main Navigation

in your cart

No Items

Welcome

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. All the advantages here really come from following the OO principle of composition.

You do have to do a little work to get everything working, but once you have the infrastructure you're ready to go. From here I have a lot of area to increase the abstraction and scale the application.