基底クラスSがあって、其処からの派生クラスA、B、C、Dが
あるとする
s.x()とすれば
ある条件Jの時は、A・BにメソッドX1を
非Jの時は、C・DにメソッドX2を使いたい
また、s.y()とすれば
ある条件Kの時は、A・CにメソッドY1を
非Jの時はB・DにメソッドY2を使いたい

この場合、どう暮らす設計すれば良いんだろう?