ココアには、問題が発生したすべてのものに対して「悪」および「有害と見なされる」と宣言するのがクールになるずっと前に設計されたため、非常に多くのシングルトンがあります。
シングルトンは完全に悪ではありません。正しく使用すると、多くの状況で非常にうまく機能します。あなたはそれらに関連する問題について知っていますが、それはあなたがそれらをすぐに取り除く必要があるという意味ではありません。さもなければ世界は終わります。一部のプロジェクトの現実はそのようなものであるため、シングルトンの問題が発生することはありません。
明らかに、ライブラリシングルトンがすでに存在する場合は、それらの使用を避けることはできません。NSApplicationやNSWorkspaceなどの特定のオブジェクトが必要な場合は常に、それらのsharedApplication / sharedWorkspaceメソッドを使用する必要があります。これが、システムフレームワークの設計方法です。
シングルトンの代わりに独自のコードを設計する場合、オブジェクトがファクトリによってのみ作成されるようにし、この種のオブジェクトが以前に要求された場合に前のインスタンスを返すようにいくつかのファクトリメソッドをコーディングできます。この設計は、モックの代わりにモックを置き換えることができないというグローバルおよびシングルトンの典型的な欠点を回避します。