LoginSignup
6
4

More than 5 years have passed since last update.

Struts2やSpringに存在するAwareインタフェースとは何か

Posted at

インタフェースには違いないAwareインタフェース

Struts2やSpring frameworkの中にはAwareの接尾辞をつけているインタフェースがあります。
役目としてはインタフェースと何ら変わらないのですが、特定のクラスに対して役割を付与する意味で使われます。

例えばStruts2では、Actionクラスに機能拡張させる意味でセッション属性を扱えるSessionAwareや、クッキー情報を扱えるCookieAwareなどです。

インタフェースなので、実装宣言したインタフェースの内容を実装するのも変わりませんが、利用するメソッドと関連するフィールドはほぼ変えることなく利用できるものがほとんどです。

例えば SessionAwareはセッション情報を管理するインタフェースなので、以下の実装が必須です。

public Map<String,Object> getSession() {
  return session;
}

Map<String,Object> session;

Java8でインタフェースにdefault動作が追加されたことによる恩恵

defaultメソッドを提供することで、実装クラスにインタフェースの実装をすることなく、宣言だけで解決できます。
ただしインタフェースのフィールドは、public、static、finalの3つのみ許可されるため、アクセスレベルの制限から、これらのインタフェースのdefaultを定義する場合には、状態を持たないチェック機構として実装するのが良さそうです。

例えば

  • 管理者としてログインしているかを判定する
  • 登録しているデータが本人のものかを判定する
  • 入力されたモデルに正しく値が入力されているか判定する

などなど、入力チェックごとにインタフェースを作成し、必要に応じて実装するか、これらの入力チェックを束ねたスーパーインタフェースを作って、実装クラスではその中から利用するメソッドのみ実行する、といったことも可能でしょう。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4