017 インターフェイス(インターフェイスの実用例) 025 解答例

// インターフェイスの宣言
interface DatabaseConnection {
    // データベースへの接続
    void connect();

    // クエリの実行
    void executeQuery(String query);

    // 接続を切断
    void disconnect();
}

// MySQLデータベースを扱うクラス
class MySQLDatabaseConnection implements DatabaseConnection {
    @Override
    public void connect() {
        // MySQLデータベースへの接続ロジック
        System.out.println("Connected to MySQL database.");
    }

    @Override
    public void executeQuery(String query) {
        // MySQLデータベースでクエリを実行するロジック
        System.out.println("Executing query in MySQL: " + query);
    }

    @Override
    public void disconnect() {
        // MySQLデータベースから切断するロジック
        System.out.println("Disconnected from MySQL database.");
    }
}

// PostgreSQLデータベースを扱うクラス
class PostgreSQLDatabaseConnection implements DatabaseConnection {
    @Override
    public void connect() {
        // PostgreSQLデータベースへの接続ロジック
        System.out.println("Connected to PostgreSQL database.");
    }

    @Override
    public void executeQuery(String query) {
        // PostgreSQLデータベースでクエリを実行するロジック
        System.out.println("Executing query in PostgreSQL: " + query);
    }

    @Override
    public void disconnect() {
        // PostgreSQLデータベースから切断するロジック
        System.out.println("Disconnected from PostgreSQL database.");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // MySQLデータベースを扱うクラスの利用例
        DatabaseConnection mysqlConnection = new MySQLDatabaseConnection();
        mysqlConnection.connect();
        mysqlConnection.executeQuery("SELECT * FROM users");
        mysqlConnection.disconnect();

        // PostgreSQLデータベースを扱うクラスの利用例
        DatabaseConnection postgresConnection = new PostgreSQLDatabaseConnection();
        postgresConnection.connect();
        postgresConnection.executeQuery("SELECT * FROM employees");
        postgresConnection.disconnect();
    }
}

この例では、DatabaseConnection インターフェイスを宣言し、それを実装する MySQLDatabaseConnection および PostgreSQLDatabaseConnection クラスを作成しています。各クラスはデータベースへの接続、クエリの実行、接続の切断などの操作を行うメソッドを提供しています。

データベース連携のためのインターフェイス

「データベース連携のためのインターフェイス」は、Javaプログラムがデータベースとやり取りするための共通の振る舞いを定義するためのインターフェイスです。このようなインターフェイスを使うことで、異なる種類のデータベース(例: MySQL、PostgreSQL)と対話するクラスを統一的な方法で作成できます。

以下は解説です:

  1. DatabaseConnection インターフェイス:
    • connect() メソッド: データベースに接続するためのメソッド。具体的なデータベース接続の実装は各クラスに委ねられます。
    • executeQuery(String query) メソッド: データベースに対してクエリを実行するためのメソッド。SQLクエリや他のデータベース固有のクエリを引数として受け取ります。
    • disconnect() メソッド: データベースから切断するためのメソッド。データベース接続を解放し、リソースを開放します。
  2. MySQLDatabaseConnection クラス:
    • DatabaseConnection インターフェイスを実装: implements DatabaseConnection として、DatabaseConnection インターフェイスのメソッドを実装します。
    • MySQL に特有のデータベース接続の実装: connect()executeQuery(String query)disconnect() メソッドをMySQLデータベースに対応するように実装します。
  3. PostgreSQLDatabaseConnection クラス:
    • DatabaseConnection インターフェイスを実装: implements DatabaseConnection として、DatabaseConnection インターフェイスのメソッドを実装します。
    • PostgreSQL に特有のデータベース接続の実装: connect()executeQuery(String query)disconnect() メソッドをPostgreSQLデータベースに対応するように実装します。
  4. メインクラス (Main クラス):
    • DatabaseConnection インターフェイスを使用して、異なるデータベースと対話するためのクラスを作成および利用します。
    • MySQLDatabaseConnectionPostgreSQLDatabaseConnection のインスタンスを作成し、connect()executeQuery(String query)disconnect() メソッドを呼び出して、各データベースとのやり取りをシンプルに行います。

このようなデータベース連携のためのインターフェイスと実装クラスの組み合わせを使用すると、アプリケーションの拡張性が向上し、異なるデータベースとの切り替えが容易になります。

「017 インターフェイス」問題集リスト