Design pattern
デザインパターンを通して変更に強いソフトウェア設計を考える - Qiita
Adaptor pattern
Builder pattern