今回は、Androidアプリ作成のヒントとしてデザインパターンに関して記載します。
大まかに、Androidアプリのフレームワーク(アーキテクチャ)として下のような図が描けます。(Androidのサイト参照)
そして、このフレームワーウを理解するために「デザインパターン」の理解がいちばんの近道だと思うので記載します。MVCモデル(参考)の理解にも近いです。
基本はオブジェクト指向
オブジェクト指向と一言で言いますが、「ポリモーフィズム」のことです。「?」が頭に浮かんだ方は気にしなくて結構です。重要ではありません。イメージがつきやすいであろうと思い記載しました。
ポイント
オブジェクト指向の考え方に従い、色々考えていくと「デザインパターン」にたどり着きます。
早い話が、「こう設計すると、綺麗なデザインになります」というものです。
Factory Methodパターン
今回は、このパターンから入ります。
Factoet Methodパターンの理解から入りたいと思います。
親クラスをカスタムするパターン
このFactory Methodパターンは、すでに出来上がっている親子関係を使って新しい機能を実装する時に便利なパターンです。
具体的に
実装するクラスで「First Program is ...」という文言を出力するところを変更して、好きな文言を出力するプログラムを作ろうとした時、以下のような形で実装できます。
<親クラス>
class Parent { public Parent() { } public void sayHello() { System.out.println("First Program is ...); } public static void main(String[] args) { sayHello(); }
<子クラス>
class Child { public Child() { } @Override public void sayHello() { System.out.println("Hello World!"); } }
これで、親クラスのメインメソッドを実行した時には「First Program is ..」と表示されますが、子クラスからメインメソッドを実行すると「Hello World」と表示されます。
ちょっと簡単でしたが、こんな感じです。
Androidアプリを作成する時には、一度作成したクラスの一部を変更したい時に使える方法と言えます。
Springframeworkでもこのデザインパターを使用しているようです。
BeanFactoryというクラスがそれのようです。
このクラスは、XMLでロードしたクラスを取得するときに使用するクラスだったと思います。
詳細に関しては、こちらのリンクを参照ください。
上のリンクは、SpringframeworkのJavaDocへのリンクになります。
java apiで使用しているもの
- DocumentBuilderFactory: javax.xml.parsers.DocumentBuilderFactory#newInstance()
- TransformerFactory: javax.xml.transform.TransformerFactory#newInstance()
- XPathFactory : javax.xml.xpath.XPathFactory#newInstance()
これらは、上記のフレームワークに必要なオブジェクトのインスタンスを生成するようなファクトリクラスのようです。
でわでわ。。。