質問するログイン新規登録

回答編集履歴

1

投稿ミス

2019/12/15 21:34

投稿

退会済みユーザー
answer CHANGED
@@ -1,16 +1,1 @@
1
- 多重継承が不可能なのは当然存じております。
1
+ いません、投稿場所を間違えました
2
-
3
- >なるべく分岐させず、特殊なメソッドが必要ならインターフェースを使い
4
- それだと結局のところ特殊カード各々に対して個別のインターフェースを用意する必要があり
5
- カードの効果を発動させる部位に if (card is Ixxxx) といった判定をさせる必要があるので
6
- 結局の分岐が必要な上カード効果実行部とカードの種類(=特殊インターフェース)の関係性が密になってしまいます。
7
- それよりは発動部分はカードがなんであれ抽象Cardクラスの発動メソッドに、場の情報を渡して呼ぶことで効果を発揮できるように設計しておけば、カードを追加する際に呼び出し元の記述変更が不要です。
8
- そもそもの話として「カード以外にもその特殊能力を発揮することがある」のでなければinterfaceとする意義は薄いでしょう。
9
-
10
- >特殊能力はカードが「持っている」ものであり、「カード is a 特殊能力」ではないと思います。
11
- その理屈であれば、特殊能力はinterfaceではなく抽象クラス化してDIで対応するべきかと思います。
12
- 特定の特殊効果が使いまわされることが多いのであればこれ一番良いかもしれません。
13
- 個人的にはカードゲームにおいて効果発動系のカードとその特殊能力は系統にこそまとめられても基本ほぼ1対1対応になってしまうのではないか、と考えてDIまでは提案しておりませんが
14
-
15
- 思ったのはやはりイメージしてるカードゲームが異なるから設計が変わってきているということでしょうか。
16
- 特殊効果のあるカードがどれだけ稀であるか、特殊効果がどれだけ全体で重複し組み合わせで持ってることがありうるか、このあたりで