Adapterパターン
デザインパターンの一つであるAdapterパターンについて記述する。
Adapterパターンとは?
AdaperはJavaオブジェクトに適用する概念。Wrapperクラスのイメージ。
Adapterパターンは、インターフェースを再利用したい場合に利用される。
Adapterのクライアントは、AdapterとTargetを利用できるようになっているアーキテクチャ。
サンプルコード
java.util.Propertiesパッケージを利用してStreamPropertyクラスを定義する。
StreamPropertyクラスはファイルのRead・Writeを可能とする。
Targetインターフェース。1
2
3
4
5
6
7
8
9public interface Target {
void readFromFile(String filename) throws IOException;
void writeToFile(String filename) throws IOException;
void setValue(String key, String value);
String getValue(String key);
}
Adapterクラス。Targetの実装クラス。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class StreamProperty extends Properties implements Target {
public void readFromFile(String filename) throws IOException {
load(new FileInputStream(filename));
}
public void writeToFile(String filename) throws IOException {
store(new FileOutputStream(filename), "");
}
public void setValue(String key, String value) {
setProperty(key, value);
}
public String getValue(String key) {
return getProperty(key, "");
}
}
Mainクラスで検証。1
2
3
4
5
6
7
8
9
10
11
12
13class Main {
public static void main(String[] args) {
FileIo fileIo = new FileProperties();
try {
fileIo.readFromFile("file.txt");
fileIo.setValue("Apple", "iOS");
fileIo.setValue("Google", "Android");
fileIo.writeToFile("newfile.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}