Padrões de design criacional com Swift
Em geral, os padrões de projeto ajudam a modularizar o software para que cada componente seja separado e cumpra uma única responsabilidade. Isso significa que os padrões de design sempre ajudaram a criar software gerenciável, testável, reutilizável e otimizado. Eles também aumentam a legibilidade do código e o processo de desenvolvimento de software é bastante acelerado com eles.
Para mais informações sobre os princípios SOLID de programação orientada a objetos, deixo aqui artigo sobre isso e outro artigo sobre Architectural Design Patterns .
Os padrões de design criacional preocupam-se em como criar um objeto ou grupo de maneira flexível e reutilizável.
“Na engenharia de software, os padrões de design criacional são padrões de design que lidam com mecanismos de criação de objetos, tentando criar objetos de maneira adequada à situação. A forma básica de criação de objetos pode resultar em problemas de design ou aumentar a complexidade do design. Os padrões de design criacional resolvem esse problema controlando de alguma forma a criação desse objeto.”
Vamos falar sobre cinco padrões de projeto neste tópico. Mas você deve saber que também existem outros padrões de design de criação, como Monostate, Object Pool etc.
Fábrica
O padrão de design Factory é uma estrutura que fornece a geração em segundo plano de uma classe ou objeto. Ele fornece um protocolo (interface) para criar objetos relacionados e permite que subclasses instanciem qual classe.
Nesse padrão, o cliente pode saber qual instância de classe pode receber, mas não os detalhes da criação. Em outras palavras, como o objeto será criado, são abstraídos.
BMW
Audi
Abstract Factory é usado para estabelecer grupos de produtos relacionados entre si. Para ser mais específico, fornece uma interface para criar famílias de produtos inter-relacionados. A diferença do padrão Factory é que ele cria um grupo. Pode ser pensado como uma fábrica de produção de fábrica.
Singleton
Uma classe deve ter apenas uma instância e essa instância deve ser fornecida com um ponto de acesso global. Com esse padrão, evitamos que o objeto seja recriado.
A palavra-chave static é importante para esse padrão de design. Não podemos criar um singleton sem uma chave estática. Porque você lembra que a estática é sempre criada uma vez na memória. Além disso, o construtor deve ser privado .
Os membros solteiros são preparados antes do programa terminar e nunca morrem dentro do aplicativo. Eles não são destruídos pelo coletor de lixo ao sair da classe. Por esta razão, nem tudo deve ser um singleton. Singletons podem ser usados para objetos que são usados regularmente no aplicativo.
Logo abaixo você pode ver que o init foi chamado apenas uma vez, mesmo que tenhamos chamado PrinterObject.shared.printSingleton() duas vezes.
Call init CreationalDesignPatterns_Sources.PrinterObject
Printing: CreationalDesignPatterns_Sources.PrinterObject
Printing: CreationalDesignPatterns_Sources.PrinterObject
O padrão de projeto protótipo permite a criação de protótipos de objetos existentes. A principal razão para projetar o padrão de protótipo é produzir rapidamente outro objeto do mesmo tipo sobre o objeto relacionado.
Para fazer clones de endereço:
Address Title: Home, Phone: 3948728, City: Istanbul
Address Title: Work, Phone: 3948728, City: Istanbul
“Builder é um padrão de design criacional que permite construir objetos complexos passo a passo. O padrão permite produzir diferentes tipos e representações de um objeto usando o mesmo código de construção.”
O padrão Builder é um padrão utilizado na criação de objetos complexos, para que o cliente possa produzir especificando apenas o tipo de objeto. O padrão Builder é usado para ocultar completamente a criação de um objeto complexo que consiste em várias partes e as fases de criação desse objeto complexo do módulo cliente. Este padrão é utilizado quando há mais de uma apresentação do produto real que o cliente deseja utilizar.
Você pode criar um encerramento para AddressBuilder devido à definição que fizemos acima. É isso aí nosso construtor está pronto.
Address Title: Home, Phone: 723823747, City: London
Em meus próximos artigos, falarei sobre padrões de design comportamentais e estruturais.
Você pode acessar todos os códigos do Github.
Se você estiver interessado em Kotlin, recomendo que leia Creational Design Patterns with Kotlin de Ecem Okan.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)