Considere:

I. Fornecer uma interface para criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. Possibilitar o adiamento da instanciação para as subclasses.

II. Garantir a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.

III. Possibilitar o armazenamento do estado interno de um objeto em um determinado momento, para que seja possível retorná-lo a este estado, caso necessário.

I, II e III são, respectivamente, objetivos dos design patterns intitulados: