ホームページ  >  記事  >  Java  >  Javaのインターフェースと抽象クラスのデザインパターンの実践

Javaのインターフェースと抽象クラスのデザインパターンの実践

WBOY
WBOYオリジナル
2024-05-01 09:15:01455ブラウズ

Java のインターフェイスと抽象クラスの設計パターン インターフェイス: インターフェイスをマーク: クラスが特定の属性を持ち、メソッドを宣言していないことを示します。関数型インターフェイス: Lambda と Streams で使用できる抽象メソッドを 1 つだけ宣言します。サービス インターフェイス: ビジネス ロジックを定義し、実装クラスは特定の実装を提供します。抽象クラス: 抽象クラス パターン: インスタンス化できないメソッドと属性を定義します。サブクラスは抽象メソッドを実装する必要があります。テンプレート メソッド パターン: 操作ステップを定義し、サブクラスで一部のステップをオーバーライドできます。

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

Java のインターフェイスと抽象クラスのデザイン パターンの実践

はじめに

インターフェイスと抽象クラスは、Java の 2 つの重要な抽象化メカニズムです。特定の設計パターンに従うことで、これらを効果的に利用できます。この記事では、インターフェイスと抽象クラスのさまざまな設計パターンを詳しく説明し、実用的なコード例を示します。

インターフェース

1. マーカーインターフェース

マーカーインターフェースはメソッドを宣言せず、クラスが特定の属性を持つことを示すために使用されます。例:

public interface Vehicle {
}

2. 関数インターフェース

関数インターフェースは 1 つの抽象メソッドのみを宣言します。これらは Lambdas 式と Streams API で使用できます。例:

@FunctionalInterface
public interface Calculate {
    int calculate(int a, int b);
}

3. サービス インターフェイス

サービス インターフェイスはビジネス ロジックを定義し、他の実装クラスが実際の実装を提供します。例:

public interface UserService {
    User getUserById(int id);
    void createUser(User user);
}

抽象クラス

1. 抽象クラスパターン

抽象クラスはメソッドとプロパティを定義できますが、インスタンス化することはできません。抽象クラスを使用するには、サブクラスで抽象メソッドを実装する必要があります。例:

public abstract class Animal {
    public abstract void makeSound();
}

2. テンプレート メソッド パターン

テンプレート メソッド パターンは操作のステップを定義し、その一部はサブクラスによってオーバーライドできます。例:

public abstract class Template {
    public final void execute() {
        step1();
        step2();
        step3();
    }

    protected abstract void step1();
    protected abstract void step2();
    protected abstract void step3();
}

実践事例

実際の事例を通して、インターフェイスと抽象クラスの設計パターンを適用する方法を示しましょう。

製品固有の質問:

それぞれ異なる機能を持つさまざまな種類の車両を管理するアプリケーションを設計します。

解決策:

  • マーカーインターフェース: すべての車両タイプを識別するための Vehicle マーカーインターフェースを作成します。 Vehicle 标记接口来标识所有车辆类型。
  • 功能接口:创建 CalculateMileage 功能接口以计算车辆的里程。
  • 抽象类:创建 AbstractVehicle 抽象类来定义车辆的通用功能,如 make 和 model。
  • 服务接口:创建 VehicleService
機能インターフェイス:

車両の走行距離を計算するための CalculateMileage 機能インターフェイスを作成します。

抽象クラス:

AbstractVehicle 抽象クラスを作成して、メーカーやモデルなどの車両の共通機能を定義します。

サービス インターフェイス:

VehicleService サービス インターフェイスを作成して、車両管理のビジネス ロジックを定義します。

🎜🎜🎜コード例🎜🎜
// 标记接口
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);
}
🎜🎜結論🎜🎜🎜インターフェイスと抽象クラスの設計パターンを活用することで、柔軟でスケーラブルなソリューションを Java アプリケーションに実装できます。この記事では、開発者がこれらの抽象化メカニズムをよりよく理解し、使用できるように、さまざまなパターンとその実際のアプリケーションの概要を説明します。 🎜

以上がJavaのインターフェースと抽象クラスのデザインパターンの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。