最近、私はBukkit APIを使ってコーディングしていますが、私の質問は直接関連していません。コンストラクタを介してインスタンスを渡すか、静的にインスタンスにアクセスしますか?
Bukkit APIでは、メインクラス(new MainClass()
が単一のインスタンス)を持つことができるので、コンストラクタを使用してメインクラスをすべてのクラスに渡す方が良いでしょうか、または、インスタンス(MainClass.getInstance()
)を返す静的メソッドを使用する必要があります。
パフォーマンスと実践のどちらが優れているのが好奇妙です。
はこれがdependency injectionと呼ばれ
コンストラクタを使用して私のクラスのすべてにメインクラスを渡して、次のとおりです。
あなたは[pass it](https://en.m.wikipedia.org/wiki/Dependency_injection)する必要がありますが、必要なものだけを渡すべきです(https://en.m.wikipedia.org)。/wiki/Law_of_Demeter)を使用して、メインオブジェクトを他のすべてのインスタンスに渡すのではなく、それらのインスタンスをメインオブジェクトの内部に掘り下げることができます。 –
@VinceEmighシングルトンを実装する方が良いですか? –
@SureshAttaこれは、グローバルな状態を導入します。これは、コードを([https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil)でテストするのが難しくなります。それはパターンの乱用になります(これが現在、アンチパターンとみなされています)(https://stackoverflow.com/questions/12755539/why-is-singleton-considered-an-anti-pattern))。 [推奨される代替案はDIです](https://stackoverflow.com/questions/1300655/whats-alternative-to-singleton)、具体的には露出を下げるために必要なものだけを渡します。 –