Adapterパターン Java

2015/07/15

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
9
public 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
22
public class StreamProperty extends Properties implements Target {

@Overide
public void readFromFile(String filename) throws IOException {
load(new FileInputStream(filename));
}

@Overide
public void writeToFile(String filename) throws IOException {
store(new FileOutputStream(filename), "");
}

@Overide
public void setValue(String key, String value) {
setProperty(key, value);
}

@Overide
public String getValue(String key) {
return getProperty(key, "");
}
}

Mainクラスで検証。

1
2
3
4
5
6
7
8
9
10
11
12
13
class 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();
}
}
}