This is a follow-up post from ‘Principles of Software Architecture’ and I would encourage readers to read that post first, so as to ensure better understanding of Software Architecture Best Practices:
- Keep design patterns consistent at each layer: In each logical layer where possible the design of components should be identical to other components for a particular task, for e.g. if you choose to use Table Data Gateway pattern to create an object that acts as gateway for database tables or views then avoid using Repository pattern which uses a different paradigm data access and utilization in a different component.
- Do not duplicate functionality in an application
- Prefer composition over inheritance: Try using composition over inheritance when trying to reuse functionality. Inheritance increases the dependency between child and parent classes, thereby limiting the reuse of child classes. This will also help in avoiding inheritance hierarchies which can get very complex…
View original post 484 more words