Em Java, o construtor é definido como um método cujo nome deve ser o mesmo nome da classe e sem indicação do tipo de retorno -- nem mesmo void. ... O construtor é unicamente invocado no momento da criação do objeto através do operador new. O retorno do operador new é uma referência para o objeto recém-criado.
O proxy fornece a mesma interface para o objeto agrupado , o Decorator fornece uma interface aprimorada, e o Proxy geralmente gerencia o ciclo de vida de seu objeto de serviço por conta própria, enquanto a composição dos Decoradores é sempre controlada pelo cliente.
Flyweight: Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente.
Design Patterns (Padrões de Projeto) são soluções para problemas comuns que encontramos no desenvolvimento ou manutenção de um software....Padrões GoF.