5

彼らはとても似ているようです。GlobalContainer に何かを登録できます。

GlobalContainer.RegisterType<TMyImplementation>.Implements<IMyInterface>;

GlobalContainerまたはを介し​​てインスタンスを取得するとServiceLocator、どちらも機能します。

MyInstance := GlobalContainer.Resolve<IMyInterface>;
MyInstance := ServiceLocator.GetService<IMyInterface>;
4

1 に答える 1

6

ServiceLocatorは、必要に応じてコード内の依存関係を解決するためのものです。そこでは、コンテナへの参照を使用したくありません。これは、コードを疎結合にするという目的に完全に反するからです。

個人的には、サービスロケーター自体がアンチパターンであり、可能な限りすべてを注入することで可能な限り回避する必要があるという意見に同意します。

于 2013-02-07T09:52:26.943 に答える