Definir o que é um padrão de projeto de maneira clara e objetiva tem sido o objetivo da comunidade de software, desde a década de 80. Assinale a alternativa que associa corretamente as definições a seguir com os padrões a que pertencem.
I. - Garantem que uma classe tenha somente uma instância e fornece somente um ponto de acesso à instância.
II. - Define uma família de algoritmos, encapsula-os em objetos e torna-os intercambiáveis. Permite que se possam mudar os algoritmos independentemente de quem os está utilizando.