SOLID
Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.(→ある基底クラスへのポインタないし参照を扱っている関数群は、その派生クラスのオブジェクトの詳細を知らなくても扱えるようにしなければならない)
この原則下のclientは、一つのinterfaceを通して、様々なserviceクラスを利用することになる。