Maison > développement back-end > Golang > Comment simuler le comportement d'une classe abstraite dans Go ?

Comment simuler le comportement d'une classe abstraite dans Go ?

Patricia Arquette
Libérer: 2024-12-05 00:45:12
original
821 Les gens l'ont consulté

How Can Abstract Class Behavior Be Simulated in Go?

Implémentation de classes abstraites dans Go

Go ne prend pas en charge nativement les classes abstraites en raison de l'accent mis sur la sécurité et la simplicité. Cependant, il existe des solutions de contournement pour simuler un comportement abstrait.

Question originale

La question traite de l'incapacité d'avoir des implémentations par défaut dans les interfaces de Go. Comme les interfaces dans Go ne peuvent pas contenir de champs, il est difficile d'implémenter un objet sans état avec des comportements par défaut.

Solution de contournement à l'aide d'un démon abstrait

La solution fournie utilise un démon abstrait qui sert comme intermédiaire entre l'interface et les implémentations concrètes.

type AbstractDaemon struct {
    Daemon
}
Copier après la connexion

Le démon abstrait reçoit la structure de l'interface via son champ Démon. Cela permet de définir des comportements par défaut dans le démon abstrait.

func (a *AbstractDaemon) start(duration time.Duration) {
    // Default implementation for start
}
Copier après la connexion

Implémentations concrètes

Les implémentations concrètes intègrent le démon abstrait et définissent leurs propres méthodes doWork :

type ConcreteDaemonA struct { 
    *AbstractDaemon
    foo int
}

func (a *ConcreteDaemonA) doWork() {
    // Custom implementation for ConcreteDaemonA
}
Copier après la connexion

Instanciation et Utilisation

Les implémentations concrètes peuvent être instanciées et utilisées comme type d'interface :

var dA Daemon = newConcreteDaemonA()
dA.start(1 * time.Second)
Copier après la connexion

Évaluation

Cette solution de contournement fournit un moyen pour implémenter des classes abstraites dans Go en découplant les comportements par défaut de l'interface et en les définissant dans une structure abstraite distincte. C'est une approche couramment utilisée dans Go pour obtenir un comportement abstrait malgré les limitations du langage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal