cat.opendoor()実装の先には、
オブジェクト同士が協調して一つのものに立ち向かう
まさしく現実世界そのものが表現できないんだけど
現実世界って君達のようにぼっちの世界じゃないんだよ?

door.openedby(cats)
これは容易に実装可能
cat1.opendoor()
cat2.opendoor()
cat3.opendoor()
これは3体が協調したことにはならないよね
これで開くような単純なopendoorだったら
cat1.opendoor()
cat1.opendoor()
cat1.opendoor()でも開いちゃうからね
opendoorしてるオブジェクト数をdoor側が数えてようやく協調動作が実現できる、でもこれってdoorがopenしようとしているオブジェクトクラスに依存している

よってdoor.openedby実装が正解にちかいわけだ

cat.opendoor実装した奴はレイオフされたほうが社会のためだぞ