shonen.hateblo.jp

やったこと,しらべたことを書く.

JavaのHelperクラスって何

概要

Javaの本でたまに見かけるのがHogeHelperとかのHelperと付いたクラス。

デザインパターンの一種なのか、適当につけたものなのか、なにか背景があるのか、結局クラス名や機能を見て理解できなかったので調べた。

wikipedia

英語版wikipediaに記事があった。信用性はいまいちだけれど。

en.wikipedia.org

クラスの主目的とはズレるメソッドを定義したい場合にHelperを使うっぽい。

さらに、Helperはメンバ変数を伴うもの、Utilityはメンバ変数を伴わず静的メソッドだけで記述されるものとある。

具体例

HelperとUtilityの違いは分かったが、主目的に一致するかどうかの判断が微妙(必要だから実装するんじゃないの?)なので、具体例を見てみる。

そもそも僕がHelperを見かけたのは、Androidsqliteへのアクセスに使われていた所。SQLiteOpenHelper。

SQLiteOpenHelper自体はabstract classで、ユーザがSQLiteOpenHelperを継承したクラスを作って、そのクラスインスタンスを介してsqliteにアクセスする。

developer.android.com

You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) and optionally onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary.

このHelper抽象クラスに実装すべきものは、「テーブルが無いなら作る」「更新が必要なら更新する」といった機能らしい。

確かに、この機能はデータベースの機能ではないし、モデルの機能とも違う…?。

いやわかんないですねやっぱり。でもAndroid Dev.でテーブルが無い・重複した問題を避けてあげるためのフレームを用意しているのは好感がありますね?