Architecture is simply a set of attributes about how your code is laid out, organized, and how it interacts with other pieces or layers of the code.
Eg: MVC architecture
Layers, in object oriented programming, are groups of specific classes that perform the similar functions
Usually, layers are broken up by concerns, which is a particular set of function or information. Our concerns can be many, depending on the application, but can include: database interaction, business rules, API interactions, or the view, or UI.
- Testable
- Easy to Refactor
- Possible to Upgrade
- Reusable
- Less dependencies: Use Dependency Injection, Use Interfaces, not Concrete Classes, Use Adapters
Design Patterns, A Primer : A design pattern is a specific solution to a commonly occurring problem in software development. There are more than twenty three design patterns organized into three categories: Creational, Structural, and Behavioral
An object responsible for instantiating other objects
Not actually a GoF design pattern, this is an object responsible for transitioning data to and from its storage
An object that encapsulates another object to make it conform to a desired API
Encapsulates a behavior or a set of behaviors, allowing them to be used interchangeably

