3rd partyライブラリはラップする
作成日時:2024-09-22
更新日時:2024-09-22
前提
仮にCSVを読み込む処理を実装したいとする。
そこで適当なライブラリを使用して、読み込み処理を実装したとする。
愚直に実装
// 色々な場所でサードパーティーのライブラリを使用している。
void methodA() {
var reader = new ThirdPartyCsvReader();
Data data = reader.read(file);
// データ加工処理
}
void methodB() {
var reader = new ThirdPartyCsvReader();
Data data = reader.read(file);
// データ加工処理
}
// methodC, methodD...
この実装において、仮にライブラリを変更したい場合だったり、読み込み処理を一部変更したい場合が発生したとする。
その場合、ライブラリを使用している箇所を全て修正しなければならない。
著しく変更容易性に欠ける。
修正
ライブラリをラップするクラスを作成し、そのクラスを使用してライブラリを利用する。
// サードパーティーのライブラリを使用しているのはラッパークラスのみ
// CSVを読み込みたい場合はラッパークラスを使用し、CSVを読み込む。
class CsvReader {
public static Data read(File file) {
var reader = new ThirdPartyCsvReader();
return reader.read(file);
}
}
void methodA() {
Data data = CsvReader.read(file);
// データ加工処理
}
void methodB() {
Data data = CsvReader.read(file);
// データ加工処理
}
// methodC, methodD...
ライブラリを変更したい場合だったり、読み込み処理を一部変更したい場合は、
CsvReaderだけを修正すればよい。
※Wrapperパターン