Os padrões de projeto de software (design patterns) tiram
proveito máximo dos pilares da orientação a objetos. Usemos
como exemplo o padrão Abstract Factory, que é um padrão de
projeto criacional que permite produzir famílias de objetos
relacionados sem especificar suas classes concretas.
O principal pilar da orientação a objetos usado nesse design
pattern é