これは有用なアプローチのように思えますが、それが良いものかどうかは疑問です.
データベース内のカード表現から適切なオブジェクトを構築してみませんか? オブジェクトデータベースを使用するか、オブジェクトリレーションマッピングを使用する可能性が高いです。このようにして、各タイプのカードをクリーンで読みやすく使いやすい方法で表現しながら、共通の基本クラスから派生した特殊なクラスの豊富なインスタンスを操作できます。
したがって、共通のテーブルを使用して、次のようにすべてのカードを格納します。
+-------------------------------------------------+
| card type | data1 | data2 | data3 | ... | dataN |
+-------------------------------------------------+
| Card | 123 | 456 | 789 | ... | abc |
| CardS1 | 123 | 456 | 789 | ... | abc |
| CardS3 | 123 | 456 | 789 | ... | abc |
| CardS2 | 123 | 456 | 789 | ... | abc |
...
そして、このようなクラス階層:
+---------------------------+
| class Card |>-+
+---------------------------+ |
| var data1 | |
| var data2 | |
| var data3 | |
| ... | |
| var dataN | |
| baseMethod1() | |
| baseMethod2() | |
+---------------------------+ |
|
+---------------------------+ |
| class CardS1. public Card |<-+
+---------------------------+ |
| specialMethod_1_1() | |
+---------------------------+ |
|
+---------------------------+ |
| class CardS2. public Card |<-+
+---------------------------+ |
| specialMethod_2_1() | |
| specialMethod_2_2() | |
+---------------------------+ |
|
+---------------------------+ |
| class CardS3. public Card |<-+
+---------------------------+
| specialMethod_3_1() |
+---------------------------+