Um padrão de projeto de software é um par problema/solução definido e bem conhecido que pode ser aplicado a novos contextos. O padrão de projeto GoF Singleton
Segundo Fowler, a arquitetura em camadas define a divisão do sistema em subsistemas hierárquicos, dispostos de forma parecida com camadas de um bolo: cada camada repousa sobre uma camada mais baixa. A comunicação entre essas camadas é feita por meio de serviços oferecidos diretamente: