質問: 漠然とした質問で恐れ入ります。 SQLiteの学習中、 「『SQLiteOpenHelper』クラスは、文字通りSQLiteを開いて利用するためのヘルパークラスです」 という一文を目にしました。 この「ヘルパークラス」というものが、イマイチどういう存在なのかわかりません。 抽象クラスという解釈で問題無いでしょうか? またその場合はnewによるインスタンス化が禁止されている、と解釈してよろしいでしょうか? よろしくお願い致します。 ■参考文献 Android StudioではじめるAndroidプログラミング入門 第2版
回答: 下記のサイトのHelperが参考になると思います。 クラス設計の話です。 http://ymir.seasar.org/docs/1.0.x/ref/standardArchitecture > > 抽象クラスという解釈で問題無いでしょうか? > > > SQLiteOpenHelperクラスはたしかに抽象クラスですが、ヘルパークラス=抽象クラスではありません。 ヘルパークラスを実装するための抽象クラスといった方が正しいです。 つまり、このクラスの意図としては、 **SQLiteをOpenするためのクラスは、このクラスを継承することで作れる** ということを示してくれています。 > > newによるインスタンス化が禁止されている、と解釈してよろしいでしょうか? > > > これはヘルパークラスそのものと言うよりも、シングルトンというデザインパターンです。 ヘルパークラスはシングルトンで実装します。 newによるインスタンス化を禁止することによって、外部から直接コンストラクタを呼べません。このような設計にすることで、インスタンスを複数作らせないようにできます。 シングルトンパターンは、設計をシンプルにできたりメモリ上の利点があります。