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