私の特定の状況では、ネストされたビュー コントローラーを介して "facebook" オブジェクト (つまり、MonoTouch.FacebookConnect.Facebook のインスタンス) を渡し、適切なコードをプロジェクトに追加しています。AppDelegate でインスタンス化された後、オブジェクトのインスタンスは常に 1 つだけ存在し、アプリのほとんどのビュー コントローラーで使用されます。facebook オブジェクトを使用するすべてのビュー コントローラーには、最初に次のようなものがあります。
public class MyViewController : UIViewController
{
Facebook facebook;
public MyViewController (Facebook facebook)
{
this.facebook = facebook;
}
// ...
}
...オブジェクトがインスタンス化される最上位のView Controllerを除きます。
それを利用するより深くネストされたView Controllerに取得するためだけに、ネストされたView Controllerを「通過」するシナリオもあります。
シングルトンは一般的に嫌われており、OOP の原則に反していることを私は知っています。コードを簡単に保守できるようにしたい。私は正しいアプローチを取っていますか、それともシングルトンはコードの品質を損なうことなくトリックを行いますか?