Heim  >  Artikel  >  Java  >  Entwurfsmusterpraxis von Schnittstellen und abstrakten Klassen in Java

Entwurfsmusterpraxis von Schnittstellen und abstrakten Klassen in Java

WBOY
WBOYOriginal
2024-05-01 09:15:01454Durchsuche

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.

Java 中接口和抽象类的设计模式实践

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:

  • Markierungsschnittstelle: Erstellen Sie eine Markierungsschnittstelle Fahrzeug, um alle Fahrzeugtypen zu identifizieren. Vehicle 标记接口来标识所有车辆类型。
  • 功能接口:创建 CalculateMileage 功能接口以计算车辆的里程。
  • 抽象类:创建 AbstractVehicle 抽象类来定义车辆的通用功能,如 make 和 model。
  • 服务接口:创建 VehicleService
Funktionsschnittstelle:

Erstellen Sie eine CalculateMileage-Funktionsschnittstelle zur Berechnung der Fahrzeugkilometerzahl.

Abstract-Klasse:

Erstellen Sie die abstrakte Klasse AbstractVehicle, um allgemeine Funktionen des Fahrzeugs zu definieren, z. B. Marke und Modell.

Service-Schnittstelle:

Erstellen Sie die Service-Schnittstelle VehicleService, um die Geschäftslogik des Fahrzeugmanagements zu definieren.

🎜🎜🎜Codebeispiel🎜🎜
// 标记接口
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);
}
🎜🎜Fazit🎜🎜🎜Durch die Nutzung der Entwurfsmuster von Schnittstellen und abstrakten Klassen können Sie flexible und skalierbare Lösungen in Java-Anwendungen implementieren. Dieser Artikel bietet einen Überblick über die verschiedenen Muster und ihre praktischen Anwendungen, um Entwicklern zu helfen, diese Abstraktionsmechanismen besser zu verstehen und zu nutzen. 🎜

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn