次のようにアーカイブシステムをコーディングしています。
IAchievement - すべての実績が実装する必要があるインターフェース
AchievementManager - ユーザー ID を使用してすべての実績をチェックするクラス
私の考えは、次のようなことを実行できるように、ArchivementManager で共有機能を持つことでした。
AchievementManager.checkUser(userId)
または
AchievementManager.check(userId, achievementId)
とにかく、AchivementManager は各 IAchievement 実装の関数チェックを呼び出す必要があります。
私がチェックしている各アチーブメントのインスタンスを持つことは意味がないので、チェックメソッドを共有/静的として宣言できると期待していました。したがって、AchievementManager 内で呼び出すことができます
AchivementXXX.check(userId)
しかし、インターフェイスで共有関数を宣言できません。
回避策はありますか?実績システムを実装するのは悪いアプローチですか?
編集:
これはゲーム用ではなく、ASP.NET の Web サイト用です