--Introduction d'exemple de code qui réalise Mixin sans utiliser la fonction d'héritage de classe générale.
C'est une fonction qui vous permet de prendre le relais et d'utiliser une certaine fonction qui a été implémentée, telle que la fonction d'héritage de classe du langage de programmation. Certains langages de programmation implémentent Mixin sans utiliser les fonctionnalités courantes d'héritage de classe.
mixin est une classe dans un langage de programmation orienté objet qui fournit des fonctions en étant héritées par des sous-classes et n'est pas destinée à fonctionner indépendamment.
Trait est un concept similaire à Mixin.
Un trait est un concept en programmation informatique, un ensemble de méthodes utilisées comme modèle conceptuel simple pour la programmation structurellement orientée objet.
Les traits sont similaires aux mix-ins, mais les mix-ins vous permettent de synthétiser des méthodes uniquement par des opérations d'héritage, tandis que les traits vous permettent de synthétiser des méthodes de plus de manières, y compris des ajouts symétriques, des exclusions de méthodes et des alias. Le trait est également différent de l'interface en ce qu'il donne la mise en œuvre ainsi que la spécification de type de la méthode au moment de la synthèse.
Dans Ruby, vous pouvez implémenter Mixin en utilisant module.
Introduction \ (Ruby 2 \ .6 \ .0 )
Ruby n'a intentionnellement pas d'héritage multiple compte tenu du fait que l'héritage multiple est une source de complexité, mais les modules peuvent être utilisés pour partager des implémentations dans la hiérarchie de classes. Cette fonctionnalité est appelée "Mix-in".
module Printer
#Contenu de sortie
def print
#Du côté de la classe@Lire et générer la variable de contenu
puts "#{@content}"
end
end
class Message
#Module d'imprimante mixte-dans
include Printer
def initialize(content)
@content = content
end
end
#La classe de message mélange le module d'imprimante-Parce que c'est dans
#Vous pouvez utiliser la méthode d'impression
m = Message.new('Hello, world')
m.print
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
$ ruby mixin.rb
Hello, world
En PHP, les traits peuvent être utilisés pour implémenter Mixin.
PHP 5.4.0 et les versions ultérieures ont introduit un mécanisme appelé «traits» pour réutiliser le code. Tray est l'un des mécanismes de réutilisation du code dans un seul langage d'héritage comme PHP. Les traits sont conçus pour réduire les contraintes de l'héritage unique et permettre à plusieurs méthodes d'être réutilisées dans des classes indépendantes dans différentes hiérarchies de classes. La syntaxe combinée des traits et des classes réduit la complexité et évite également les problèmes courants associés à l'héritage multiple et au Mixin. Un trait est similaire à une classe, mais un trait sert uniquement à regrouper certaines caractéristiques. Vous ne pouvez pas créer une instance du trait lui-même. L'ajout de fonctionnalités à l'héritage à l'ancienne vous permet de configurer le comportement horizontalement. En d'autres termes, vous pouvez ajouter des membres de classe sans hériter.
<?php
trait Printer {
/**
*Renvoie le contenu.
* @return string Chaîne de contenu
*/
abstract protected function getContent();
/**
*Contenu de sortie.
*/
public function print() {
echo $this->getContent(), "\n";
}
}
class Message {
#Mélanger le trait d'imprimante-dans
use Printer;
private $content;
/**
*constructeur.
* @param string $content content string
*/
public function __construct(string $content) {
$this->content = $content;
}
/**
*Renvoie le contenu.
* @return string Chaîne de contenu
*/
protected function getContent() {
return $this->content;
}
}
#La classe de message mélange le trait d'imprimante-Parce que c'est dans
#Vous pouvez utiliser la méthode d'impression
$m = new Message('Hello, world');
$m->print();
$ php --version
PHP 7.3.7 (cli) (built: Jul 5 2019 12:44:05) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies
$ php mixin.php
Hello, world
En Java, Mixin peut être réalisé en utilisant la méthode d'interface par défaut.
Evolving Java Interface (Java Magazine Vol.37 JANVIER / FÉVRIER 2018)
La méthode par défaut est le corps de la méthode, c'est-à-dire la méthode de l'interface qui a l'implémentation par défaut. La méthode par défaut est définie en préfixant la signature de méthode avec le modificateur par défaut et contient le corps complet de la méthode.
interface Printer {
/**
*Renvoie le contenu.
* @retourner la chaîne de contenu
*/
String getContent();
/**
*Contenu de sortie.
*/
default void print() {
//De la méthode getContent implémentée côté classe
//Obtenez du contenu et des résultats
System.out.println(getContent());
}
}
//Interface d'imprimante Mix-dans
public class Message implements Printer {
private String content;
/**
*constructeur.
* @chaîne de contenu de contenu param
*/
public Message(String content) {
this.content = content;
}
/**
*Renvoie le contenu.
* @retourner la chaîne de contenu
*/
@Override
public String getContent() {
return content;
}
public static void main(String[] args) {
//La classe de message mélange l'interface de l'imprimante-Parce que c'est dans
//Vous pouvez utiliser la méthode d'impression
Message m = new Message("Hello, world");
m.print();
}
}
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
$ javac Printer.java Message.java
$ java Message
Hello, world
Recommended Posts