Schnittstellen und abstrakte Klassenentwurfsmuster in der Java-Schnittstelle: Schnittstelle markieren: Zeigt an, dass die Klasse über bestimmte Attribute verfügt und keine Methoden deklariert. Funktionsschnittstelle: deklariert nur eine abstrakte Methode, die für Lambdas und Streams verfügbar ist. Serviceschnittstelle: Definiert die Geschäftslogik und die Implementierungsklasse stellt eine spezifische Implementierung bereit. Abstrakte Klasse: Abstraktes Klassenmuster: Definiert Methoden und Attribute, die nicht instanziiert werden können, und Unterklassen müssen abstrakte Methoden implementieren. Vorlagenmethodenmuster: Definieren Sie Operationsschritte, und Unterklassen können einige Schritte überschreiben.
Entwurfsmusterpraxis von Schnittstellen und abstrakten Klassen in Java
Einführung
Schnittstellen und abstrakte Klassen sind zwei wichtige Abstraktionsmechanismen in Java. Sie können effektiv genutzt werden, indem bestimmte Entwurfsmuster befolgt werden. Dieser Artikel befasst sich mit den verschiedenen Entwurfsmustern von Schnittstellen und abstrakten Klassen und bietet praktische Codebeispiele.
Schnittstelle
1. Markierungsschnittstelle
Die Markierungsschnittstelle deklariert keine Methoden und wird verwendet, um anzuzeigen, dass die Klasse bestimmte Attribute hat. Zum Beispiel:
public interface Vehicle { }
2. Funktionsschnittstelle
Funktionsschnittstelle deklariert nur eine abstrakte Methode. Sie können in Lambdas-Ausdrücken und der Streams-API verwendet werden. Zum Beispiel:
@FunctionalInterface public interface Calculate { int calculate(int a, int b); }
3. Service-Schnittstelle
Die Service-Schnittstelle definiert die Geschäftslogik, während andere Implementierungsklassen die eigentliche Implementierung bereitstellen. Zum Beispiel:
public interface UserService { User getUserById(int id); void createUser(User user); }
Abstrakte Klasse
1. Abstraktes Klassenmuster
Abstrakte Klassen können Methoden und Eigenschaften definieren, aber nicht instanziiert werden. Unterklassen müssen abstrakte Methoden implementieren, um abstrakte Klassen verwenden zu können. Zum Beispiel:
public abstract class Animal { public abstract void makeSound(); }
2. Vorlagenmethodenmuster
Das Vorlagenmethodenmuster definiert die Schritte einer Operation, von denen einige durch Unterklassen überschrieben werden können. Zum Beispiel:
public abstract class Template { public final void execute() { step1(); step2(); step3(); } protected abstract void step1(); protected abstract void step2(); protected abstract void step3(); }
Praktischer Fall
Lassen Sie uns anhand eines praktischen Falls zeigen, wie die Schnittstelle und die abstrakten Klassenentwurfsmuster angewendet werden.
Spezifische Produktfrage:
Entwerfen Sie eine Anwendung zur Verwaltung verschiedener Fahrzeugtypen mit jeweils unterschiedlichen Funktionen.
Lösung:
Fahrzeug
, um alle Fahrzeugtypen zu identifizieren. Vehicle
标记接口来标识所有车辆类型。CalculateMileage
功能接口以计算车辆的里程。AbstractVehicle
抽象类来定义车辆的通用功能,如 make 和 model。VehicleService
Erstellen Sie eine CalculateMileage
-Funktionsschnittstelle zur Berechnung der Fahrzeugkilometerzahl.
Erstellen Sie die abstrakte Klasse AbstractVehicle
, um allgemeine Funktionen des Fahrzeugs zu definieren, z. B. Marke und Modell.
Erstellen Sie die Service-Schnittstelle VehicleService
, um die Geschäftslogik des Fahrzeugmanagements zu definieren.
// 标记接口 public interface Vehicle {} // 功能接口 @FunctionalInterface public interface CalculateMileage { double calculate(Vehicle vehicle); } // 抽象类 public abstract class AbstractVehicle implements Vehicle { protected String make; protected String model; public String getMake() { return make; } public String getModel() { return model; } } // 服务接口 public interface VehicleService { List<Vehicle> getAllVehicles(); Vehicle getVehicleById(int id); void createVehicle(Vehicle vehicle); void deleteVehicle(int id); }
Das obige ist der detaillierte Inhalt vonEntwurfsmusterpraxis von Schnittstellen und abstrakten Klassen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!