Qual é a diferença entre padrões e princípios de projeto orientado a objetos? Eles são coisas diferentes? Tanto quanto eu entendi, os dois tentam alcançar algum objetivo comum (por exemplo, flexibilidade). Então, posso dizer que um padrão é um princípio e vice-versa?
Princípio do Projeto = SÓLIDO (isto é, Princípio da Inversão da Dependência)
Design Pattern = Gof (ou seja, Abstract Factory Pattern)
fonte
Estes conceitos não são os mesmos:
* Princípio do design: * Os princípios de design do software representam um conjunto de diretrizes que nos ajudam a evitar um mau design. como: Abrir Fechar Princípio
* Design Pattern: * um Design Pattern é uma solução reutilizável geral para um problema comum dentro de um determinado contexto no design de software. Como: Singleton
fonte
Padrões são para princípios, o que implementações são para padrões.
Um princípio seria "indireção", que poderia ser realizado por um padrão de "fábrica", que é implementado como uma classe com métodos de fábrica no final.
fonte
Bem, os princípios são regras, enquanto os padrões são seus exemplos concretos.
fonte
Padrões são coisas mais de alto nível, do que princípios. Os padrões resolvem problemas específicos. Os princípios podem ser aplicados em qualquer lugar, independentemente do contexto. Na verdade, padrões baseados em princípios (SRP, DRY, etc)
EG Vamos analisar o padrão de estratégia. Ele define uma família de algoritmos, encapsula cada um e os torna intercambiáveis. Então, você tem aqui o conceito de algoritmo de alto nível. Com padrão de estado, você tem um conceito de estado de alto nível. Com princípios, você não tem nenhum conceito de alto nível. Os princípios são os blocos de construção usados pelos usuários para atingir a meta. Ao implementar o padrão de estratégia, você usa o SOLID:
fonte
Padrões onde originalmente documentados para Arquitetura. Na arquitetura, aplique a coisas que vão desde a colocação da porta em uma sala até o layout de uma vila.
O Gangue dos Quatro aplicou a idéia à Programação Orientada a Objetos. Pode haver mais de um padrão que pode ser usado para resolver um problema, mas cada padrão terá uma implementação específica. Existem padrões em outras abordagens de programação, mas não conheço nenhum livro aplicável. Como outros mencionaram, os padrões cobrem implementações específicas. Usar um padrão quando ele não se aplica é geralmente considerado um antipadrão.
Os princípios não cobrem a implementação, embora possa haver abordagens de implementação padrão. Os princípios são mais sobre a cobertura de questões gerais, em vez de problemas específicos. Para Inversão do Controle, conheço pelo menos três abordagens de implementação. Para DRY (não se repita), eu não conheço uma única abordagem de implementação específica, embora eu use várias.
Considerar
fonte
Princípio de Design OO—
O princípio OO é um conjunto de diretrizes que garantem o conceito de POO. Com base no conceito OOP, isso define maneiras de projetar de maneira melhor, um design melhor. O princípio básico do projeto OO é o SOLID.
Um padrão de design fornece uma solução geral para um problema de design. Observe que o "padrão de design" também pode ser aplicado à palavra orientada ao meio-dia. Portanto, os padrões de projeto OO (OODPs) são aqueles que fornecem uma solução geral para o princípio OO baseado em design orientado a objetos. Os padrões de design são descobertos, não inventados. Existem várias maneiras de definir OODPs e a mais famosa é a BSC [Behavioral Structural Creational].
A seguir, o link para uma explicação detalhada. http://techythought.wordpress.com/2013/01/21/design-principle-vs-ds-design-pattern-describing-oop-elements/
fonte