2017-07-30 18 views
2

これら2つのコードの違いは何ですか?両方とも同じ結果を生み出します。キャッシングでインスタンスとキャッシュの追加の違い

インスタンスの追加

DefaultPicoContainer cachingContainer = new DefaultPicoContainer(new OptInCaching().wrap(new ConstructorInjection())); 

cachingContainer.as(Characteristics.CACHE).addComponent(Cookie.class); 

Cookie cookie1 = (Cookie)cachingContainer.getComponent(Cookie.class); 
Cookie cookie2 = (Cookie)cachingContainer.getComponent(Cookie.class); 

assert(cookie1 == cookie2); // Same instance: OK 

:あなたはコンテナにオブジェクトのインスタンス化を委任し、管理対象インスタンスがキャッシュされているその最初のケースで

DefaultPicoContainer instanceContainer = new DefaultPicoContainer(new ConstructorInjection()); 

instanceContainer.addComponent(Cookie.class, new Cookie()); 

Cookie cookie3 = (Cookie)instanceContainer.getComponent(Cookie.class); 
Cookie cookie4 = (Cookie)instanceContainer.getComponent(Cookie.class); 

assert(cookie3 == cookie4); // Same instance: OK 

答えて

0

を。 2番目のケースでは、readyインスタンスをCookieタイプとしてコンテナに格納します。

管理されたコンポーネント(最初のケース)は依存関係が自動的に発生し、ライフサイクルイベントなどを持つこともあります。ほとんどの場合、インスタンス化をコンテナに委譲する必要があります。

関連する問題