4

「Singleton」への言及を多く見てきましたが、それらが一般的な検証、変換などの「ユーティリティ」関数に使用されているのを見てきました。「self」を参照する必要がないと仮定すると、逆にシングルトンを使用する利点はありますかクラスメソッドとオプションの静的変数を使用してユーティリティクラスを実装するだけですか? スタイル?パフォーマンス?同時実行性?

つまり、MySingleton インスタンスを介して foo を呼び出す代わりに、次のようにします。

BOOL b = [[MySingleton sharedInstance] foo:xyz];

MyUtility のクラス メソッドを介して foo を呼び出すことができます。

BOOL b = [[MyUtility class] foo:xyz];

いずれかのクラスの実装が暗示されているため、問題がなければそれらのリストは省略します。

4

1 に答える 1

0

自己への参照がないと仮定する以外に利点はありません。そして、「あなた」とは、あなたの実装を意味するのではなくMyUtility、呼び出すクラスを意味しMyUtilityます。言い換えるとMyUtility、通常のオブジェクト指向の原則に反して、実装の知識を他のクラスに投資することになります。

そうは言っても、同じ議論は逆に実行されます。インスタンスがあると想定する場合はMyUtility、インスタンスとして機能する必要があります。クラスメソッドを呼び出すと、それらを内部的にシングルトンインスタンスに渡すことができます。

ただし、インスタンスは例外ではなく標準であるため、インスタンスとの通信を期待することは、スタイル的にはあまり推測的ではありません。

于 2012-10-15T20:12:23.570 に答える