Mit dieser Funktion können Sie eine bestimmte implementierte Funktion übernehmen und verwenden, z. B. die Klassenvererbungsfunktion der Programmiersprache. Einige Programmiersprachen implementieren Mixin ohne Verwendung allgemeiner Klassenvererbungsfunktionen.
mixin ist eine Klasse in einer objektorientierten Programmiersprache, die Funktionen bereitstellt, indem sie von Unterklassen geerbt wird, und nicht für den unabhängigen Betrieb vorgesehen ist.
Trait ist ein Konzept ähnlich wie Mixin.
Ein Merkmal ist ein Konzept in der Computerprogrammierung, eine Sammlung von Methoden, die als einfaches konzeptionelles Modell für die strukturell objektorientierte Programmierung verwendet werden.
Merkmale ähneln Mix-Ins, aber mit Mix-Ins können Sie Methoden nur durch Vererbungsoperationen synthetisieren, während Sie mit Merkmalen Methoden auf mehr Arten synthetisieren können, einschließlich symmetrischer Hinzufügungen, Methodenausschlüssen und Aliasing. Das Merkmal unterscheidet sich auch von der Schnittstelle darin, dass es die Implementierung sowie die Typspezifikation der Methode zum Zeitpunkt der Synthese angibt.
In Ruby kann Mixin mithilfe eines Moduls realisiert werden.
Einführung \ (Ruby 2 \ .6 \ .0 )
Ruby hat absichtlich keine Mehrfachvererbung, da Mehrfachvererbung eine Quelle der Komplexität darstellt, aber Module können verwendet werden, um Implementierungen über die Klassenhierarchie hinweg gemeinsam zu nutzen. Diese Funktion wird als "Mix-In" bezeichnet.
module Printer
#Inhalt ausgeben
def print
#Auf der Klassenseite@Lesen und geben Sie die Inhaltsvariable aus
puts "#{@content}"
end
end
class Message
#Druckermodul mischen-im
include Printer
def initialize(content)
@content = content
end
end
#Nachrichtenklasse mischt Druckermodul-Weil es in ist
#Sie können die Druckmethode verwenden
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
In PHP können Merkmale verwendet werden, um Mixin zu implementieren.
PHP 5.4.0 und höher führten einen Mechanismus namens "Merkmale" zur Wiederverwendung von Code ein. Trate ist einer der Mechanismen zur Wiederverwendung von Code in einer einzigen Vererbungssprache wie PHP. Die Merkmale sollen die Einschränkungen der Einzelvererbung verringern und die Wiederverwendung mehrerer Methoden in unabhängigen Klassen in verschiedenen Klassenhierarchien ermöglichen. Die kombinierte Merkmal- und Klassensyntax reduziert die Komplexität und vermeidet außerdem häufige Probleme im Zusammenhang mit Mehrfachvererbung und Mixin. Ein Merkmal ähnelt einer Klasse, aber ein Merkmal dient nur zum Gruppieren einiger Merkmale. Sie können keine Instanz des Merkmals selbst erstellen. Durch Hinzufügen von Funktionen zur altmodischen Vererbung können Sie das Verhalten horizontal konfigurieren. Mit anderen Worten, Sie können Klassenmitgliedern hinzufügen, ohne zu erben.
<?php
trait Printer {
/**
*Gibt den Inhalt zurück.
* @Rückgabezeichenfolge Inhaltszeichenfolge
*/
abstract protected function getContent();
/**
*Inhalt ausgeben.
*/
public function print() {
echo $this->getContent(), "\n";
}
}
class Message {
#Druckereigenschaft mischen-im
use Printer;
private $content;
/**
*Konstrukteur.
* @param string $Inhalt Inhaltszeichenfolge
*/
public function __construct(string $content) {
$this->content = $content;
}
/**
*Gibt den Inhalt zurück.
* @Rückgabezeichenfolge Inhaltszeichenfolge
*/
protected function getContent() {
return $this->content;
}
}
#Die Nachrichtenklasse mischt die Druckereigenschaften-Weil es in ist
#Sie können die Druckmethode verwenden
$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
In Java kann Mixin mithilfe der Standardschnittstellenmethode realisiert werden.
Weiterentwicklung der Java-Schnittstelle (Java Magazine Vol.37 JANUAR / FEBRUAR 2018)
Die Standardmethode ist der Methodenkörper, dh die Methode der Schnittstelle mit der Standardimplementierung. Die Standardmethode wird definiert, indem der Methodensignatur der Standardmodifikator vorangestellt wird, und enthält den gesamten Hauptteil der Methode.
interface Printer {
/**
*Gibt den Inhalt zurück.
* @Inhaltszeichenfolge zurückgeben
*/
String getContent();
/**
*Inhalt ausgeben.
*/
default void print() {
//Aus der auf der Klassenseite implementierten getContent-Methode
//Holen Sie sich Inhalt und Ausgabe
System.out.println(getContent());
}
}
//Druckerschnittstelle mischen-im
public class Message implements Printer {
private String content;
/**
*Konstrukteur.
* @param content content string
*/
public Message(String content) {
this.content = content;
}
/**
*Gibt den Inhalt zurück.
* @Inhaltszeichenfolge zurückgeben
*/
@Override
public String getContent() {
return content;
}
public static void main(String[] args) {
//Nachrichtenklasse mischt Druckerschnittstelle-Weil es in ist
//Sie können die Druckmethode verwenden
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