Modèles de conception de création avec Kotlin

Dec 13 2022
Modèles de conception Dans la conception de logiciels, ce sont des modèles créés pour résoudre des problèmes courants fréquemment rencontrés dans les problèmes. Les modèles de conception concernent également la flexibilité et la réutilisabilité des solutions mises en œuvre dans le processus logiciel.

Modèles de conception

Dans la conception de logiciels, ce sont des modèles créés pour résoudre des problèmes courants fréquemment rencontrés dans les problèmes. Les modèles de conception concernent également la flexibilité et la réutilisabilité des solutions mises en œuvre dans le processus logiciel.

Chaque modèle décrit un problème qui se reproduit dans notre environnement, puis décrit l'application de la solution à ce problème de telle manière que vous pouvez utiliser cette solution un million de fois sans le faire deux fois de la même manière.

Modèles de conception de création

En génie logiciel, les modèles de conception créationnels sont des modèles de conception qui traitent des mécanismes de création d'objets, en essayant de créer des objets d'une manière adaptée à la situation. La forme de base de la création d'objets peut entraîner des problèmes de conception ou ajouter de la complexité à la conception. Les modèles de conception créationnels résolvent ce problème en contrôlant d'une manière ou d'une autre cette création d'objet.

Dans cette rubrique, nous allons parler de cinq modèles de conception. Mais vous devez savoir qu'il existe également d'autres modèles de conception de création, tels que Object Pool, etc.

1. Modèles d'usine

Factory Design Pattern est une structure qui fournit la génération en arrière-plan d'une classe ou d'un objet. Il fournit une interface pour créer des objets liés et permet aux sous-classes d'instancier quelle classe.

Dans ce modèle, le client peut savoir quelle instance de classe il peut prendre, mais pas les détails de la création. En d'autres termes, la manière dont l'objet sera créé est abstraite.

Audi Output: brand='A4', modal='Black'
Bmw Output: brand='118i', modal='White'

Abstract Factory est utilisé pour établir des groupes de produits liés les uns aux autres. Pour être plus précis, il fournit une interface pour créer des familles de produits interdépendantes.

La différence avec le modèle Factory est qu'il crée un groupe. Il peut être considéré comme une usine produisant une usine.

3. Modèles de singleton

Une classe ne doit avoir qu'une seule instance, et cette instance doit être dotée d'un point d'accès global. Avec ce motif, nous empêchons la recréation de l'objet.

Le mot-clé statique est important pour ce modèle de conception. Nous ne pouvons pas créer de singleton sans clé statique. Parce que vous vous souvenez que statique est toujours créé une fois en mémoire. De plus, le constructeur doit être privé .

Les membres singleton sont préparés avant la fin du programme et ne meurent jamais dans l'application. Ils ne sont pas détruits par le ramasse-miettes en quittant la classe. Pour cette raison, tout ne doit pas être transformé en singleton. Les singletons peuvent être utilisés pour les objets qui sont utilisés régulièrement dans l'application.

En bas à droite, vous pouvez voir que init n'a été appelé qu'une seule fois même si nous avons appelé deux fois PrenterObject.printObject() .

Start
Call init: com.ecemokan.creationaldesignpattern.singleton.PrenterObject@3ac3fd8b
Printing with object: com.ecemokan.creationaldesignpattern.singleton.PrenterObject@3ac3fd8b
Printing with object: com.ecemokan.creationaldesignpattern.singleton.PrenterObject@3ac3fd8b

Builder est un modèle de conception de création qui vous permet de construire des objets complexes étape par étape. Le modèle vous permet de produire différents types et représentations d'un objet en utilisant le même code de construction.

Le modèle de générateur est un modèle utilisé dans la création d'objets complexes, de sorte que le client peut produire en spécifiant uniquement le type d'objet. Le pattern Builder permet de masquer complètement la création d'un objet complexe composé de plusieurs parties et les phases de création de cet objet complexe depuis le module client. Ce modèle est utilisé lorsqu'il y a plus d'une présentation du produit réel que le client souhaite utiliser.

Address(phone=0 (555) 555 55 55, title=New Address, no=17A, city=NewYork)

Une fonction qui ne prend rien et ne renvoie rien dans Kotlin ressemble à :

var function : () -> Unit

Par exemple,

class Builder (val multiplier: Int) {
    
    fun invokeStuff(action: (Builder.() -> Unit)) {
        this.action()
    }
    
    fun multiply(value: Int) : Int {
        return value * multiplier
    }
}

action: (Builder.() -> Unit)

Cela signifie que lorsque nous utilisons ce constructeur comme tel

var builder = Builder(10)
builder.invokeStuff({
    var result = multiply(1)
    println(result)
})

5. Prototype

Le modèle de conception de prototype permet la création de prototypes d'objets existants. La principale raison de concevoir le modèle de prototype est de produire rapidement un autre objet du même type sur l'objet associé.

----- Origin Address -----
City : NewYork
No : 17A
Title : Origin Address
Phone: 0 (555) 555 55 55
----- Copy Address -----
City : Copy NewYork
No : 17A
Title : Copy Address
Phone: 0 (555) 555 55 55

Dans mes prochains articles, je parlerai des modèles de conception comportementaux et structurels.

Si vous êtes intéressé par Swift, je vous recommande de lire Creational Design Patterns with Swift de Pınar Koçak.

Ressources