Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1995), p. 4. 47 Se tivéssemos assumido linguagens procedurais, talvez tivéssemos incluído padrões como “Herança”, “Encapsulamento" e “Polimorfismo".