もう一度確認しておくけど、飛車クラスなんか作り出す馬鹿はいないよな?
飛車クラスのmoveをkoma.moveとすることで汎用的になったと思っている馬鹿はいないよな

そう呼び出すがためにどのくらいのコードが必要で、そのために煩雑なファクトリークラスのコードもかかなきゃいけないってこともわかってるよな?

関数型なら、こんな面倒な継承関係はつくらないってこともわかってるよな?

たかだか駒を動かすために、何個のクラス定義が必要ですか

というのが高度な設計の問いだよな