[GO] [Viererbande] Designmuster lernen - Fabrikmethode

Factory-Methode-Factory-Methode

** Inhaltsverzeichnis ** Abstract Factory Ich verstehe, dass nur der Teil des Musters der konkreten Fabrikklasse diesem Muster entspricht.

Zweck

Es wird nur die Schnittstelle zum Erstellen eines Objekts angegeben, und die Unterklasse entscheidet, welche Klasse tatsächlich instanziiert wird. Das Factory-Methodenmuster überlässt die Instanziierung Unterklassen.

Komponente

-Produkt Abstrakte Klasse der generierten Teile ・ ConcreteProduct Generierte Teile ・ Ersteller abstrakte Klasse der Teilefertigung Fabrik ・ Fabrik zur Herstellung von ConcreteCreator-Teilen

Implementierung

Implementieren Sie ein Programm, das Profisportler dazu ermutigt, beim Veranstalter zu schwören. Repräsentative Athleten, die den Eid ablegen, werden von ihren jeweiligen Sportverbänden entsandt.

Produkt Abstrakte Klasse der generierten Teile

Abstrakte Klasse für Profisportler

ProfessionalAthlete.kt


package factorymethod

abstract class ProfessionalAthlete(type: Type) {
    enum class Type(val value: String) {
        Soccer("Fußball"),
        BaseBall("Baseball")
    }

    val myType = type

    abstract fun athletesOath()
}

ConcreteProduct Generierte Teile

Professionelle Fußballspieler Betonklasse

ProfessionalSoccerAthlete.kt


package factorymethod

class ProfessionalSoccerAthlete(name: String): ProfessionalAthlete(Type.Soccer) {

    private val name = name

    override fun athletesOath() {
        println("Eid! ich" + name + "ist. Fachmann【" + myType.value + "] Spielen Sie als Spieler offen mit einem Fußball!")
    }
}

Professionelle Baseballspieler Betonklasse

ProfessionalBaseBallAthlete.kt


package factorymethod

class ProfessionalBaseBallAthlete(name: String): ProfessionalAthlete(Type.BaseBall) {

    private val name = name

    override fun athletesOath() {
        println("Eid! ich" + name + "ist. Fachmann【" + myType.value + "] Verwenden Sie als Spieler einen Schläger und einen Baseballball, um offen zu spielen!")
    }
}

Mit dem oben genannten wurde der Player (Produkt) implementiert. Als nächstes werden wir einen Sportverband (Fabrik) implementieren, der Athleten (Produkte) entsendet (erstellt).

Schöpfer Abstrakte Klasse der Teilefertigung Fabrik

Sportverband Abstrakte Klasse

SportsFederation.kt


package factorymethod

abstract class SportsFederation {
    fun getAthlete(): ProfessionalAthlete {
        return dispatchRepresentativeAthlete()
    }

    protected abstract fun dispatchRepresentativeAthlete(): ProfessionalAthlete
}

ConcreteCreator Parts Manufacturing Factory

Fußballverein Betonklasse

SoccerFederation.kt


package factorymethod

class SoccerFederation: SportsFederation() {
    override fun dispatchRepresentativeAthlete(): ProfessionalAthlete {
        return ProfessionalSoccerAthlete("Vertreter Taro Sakada")
    }
}

Baseball Federation Concrete Class

BaseBallFederation.kt


package factorymethod

class BaseBallFederation: SportsFederation() {
    override fun dispatchRepresentativeAthlete(): ProfessionalAthlete {
        return ProfessionalBaseBallAthlete("Baseball Buch Kapitän Mann")
    }
}

Schließlich werden wir einen Organisator implementieren, der repräsentative Spieler (Produkt) von jedem Sportverband (Fabrik) anfordert und schwört.

Nutzer

Veranstalterklasse

Organizer.kt


package factorymethod

class Organizer {
    init {
        var athleteList: MutableList<ProfessionalAthlete> = mutableListOf()
        //Lassen Sie repräsentative Spieler von jedem Sportverband entsenden
        //Erworbener repräsentativer Spieler vom Fußballverband
        athleteList.add(SoccerFederation().getAthlete())
        //Erworbener repräsentativer Spieler vom Baseballverband
        athleteList.add(BaseBallFederation().getAthlete())

        //Werde vereidigt
        for (athlete in athleteList) {
            athlete.athletesOath()
        }
    }
}

Jetzt haben wir ein Muster, das verwendet werden kann, wenn die Klasse des Objekts, das erstellt werden muss, nicht im Voraus bekannt sein kann. Ich fühle mich wie.

Ausgabeergebnis

[output]
Eid! Ich bin Vertreter Taro Sakada. Spielen Sie als professioneller Fußballspieler auf einfache Weise mit einem Fußball!
Eid! Ich bin ein Baseball-Buchkapitän. Spielen Sie als professioneller [Baseball-] Spieler mit einem Schläger und einem Baseballball.

Recommended Posts

[Viererbande] Designmuster lernen - Fabrikmethode
[Viererbande] Designmusterlernen - Abstract Factory
[Viererbande] Design Pattern Learning - Template-Methode
[Viererbande] Design Pattern Learning - Singleton
[Viererbande] Design Pattern Learning --Decorator
[Viererbande] Designmuster lernen --Besucher
[Viererbande] Design Pattern Learning - Vermittler
[Viererbande] Designmusterlernen --Iterator
[Viererbande] Designmuster lernen - Fassade
[Viererbande] Design Pattern Learning - Composite
[Viererbande] Designmuster lernen - Prototyp
[Viererbande] Designmuster lernen - Andenken
[Viererbande] Designmuster lernen - Staat
[Vierergruppe] Design Pattern Learning - Interpreter
[Viererbande] Design Pattern Learning - Builder
[Viererbande] Designmuster lernen - Brücke
[Viererbande] Designmuster lernen --Proxy
[Viererbande] Design Pattern Learning - Strategie
[Viererbande] Designmuster lernen --Adapter
[Viererbande] Design Pattern Learning - Beobachter
[Viererbande] Designmuster lernen - Befehl
[Viererbande] Designmuster lernen - Fluggewicht
[Viererbande] Designmuster lernen - Kette der Verantwortung
Entwurfsmuster #Factory-Methode
Lernen Sie das Entwurfsmuster "Factory Method" in Python
Entwurfsmuster # Template-Methode
Python Design Pattern - Template-Methode
Einführung einer datengesteuerten Controller-Entwurfsmethode
Gang of Four (GoF) -Muster in Python
Lernen Sie das Entwurfsmuster "Vorlagenmethode" in Python
Lernen der Mustererkennung im Video Teil 1 Bereich der Mustererkennung
Clustering-Methode Clustering
Entwurfsmuster #Builder
Entwurfsmuster #Adapter
Entwurfsmuster #Decorator
Entwurfsmuster #Observer
Entwurfsmuster #Facade
Entwurfsmuster #Strategie
Entwurfsmuster #Singleton
Entwurfsmuster #Proxy
Ich habe ein Designmuster in der Kotlin Factory Edition geschrieben
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python