アーキテクチャ、プログラム多重性を改善する設計~第五回多重化は反射とIOC続に欠かせない(大白話IOC)

4307 ワード

研究するべき問題:IOCは何ですか?何を解決しましたか?私たちのプロジェクトではなぜIOCが使われますか?反射は性能に大きな影響を与えますか?反射しないでください.誰の意見が一番大きいですか?
問題を言い始めましょう.
1,IOCは何ですか?コンテナ、フレームワークはもちろん、IOCはいくつかのインターフェースとその様々な実装のクラス名を一つのファイルに配置しています.XMLでもいいです.configプロファイルでもいいです.そしてプログラム「実行時」に配置された情報に基づいてオブジェクトを動的に入手し、プログラムでこのオブジェクトを使用できます.IOCは相手を作るためのものです.
2,何を解決しましたか?一つのインターフェースは、sql実現、oracle実現、access実現など三つの実現がありますが、現在の環境ではどのような方法で実現されていますか?
 
 1 //     
 2 public interface IRepository<TEntity> where TEntity : class
 3 {
 4   void Insert(TEntity entity);
 5 }
 6 
 7 // sql   
 8 public class SqlRepository<TEntity> : IRepository<TEntity>
 9 {
10   public void Insert(TEntity entity)
11   {
12     ...
13   }
14 }
15 
16 // Access  
17 public class AccessRepository<TEntity> : IRepository<TEntity>
18 {
19   public void Insert(TEntity entity)
20   {
21     ...
22   }
23 }
 
3,私たちのプロジェクトではなぜIOCが使われますか?プロジェクトの中でIOCを使う目的は簡単です.プログラムを緩めるということです.抽象的な話です.コードを見てください.
1 class UserService
2 {
3     var userRepository=new UserRepository();
4 }
私たちはuserRepositoryオブジェクトがUserRepositoryの実現に依存しているのを見ることができます.userRepositoryの実現方法を変更する必要がある時、コードの中でしか変えられないので、プログラムの拡張性が低いです.これはプロジェクトにIOCを導入した理由です.「プログラムモジュールに複数の実施形態がある場合、オブジェクトを作成するためのIOC方式の例を参照することができる」.
4,反射は性能に大きな影響を及ぼしていますか?この問題は無数の人が無数の実験をしました.反射と反射しないプログラムでは、差がはっきりしません.データの複雑さと関係がありますので、普通のデータ量は小さいです.数十倍かもしれません.データ量は100倍以上になります.私たちはマイクロソフトの元のコードから見ることができます.いくつかの時に多くの反射を使っています.はい、反射を使うことに反対しません.
5,反射しないで、誰が一番意見が大きいですか?この問題は面白いです.誰が一番意見が大きいですか?意見が一番大きいです.反射していないプログラムがどのように対象に向かうか想像できません.需要が変更されると、プログラムコードを修正します.これはプログラマにとって苦痛であり、対象に向かう原則にも反しています.わずかな性能ではなく、この性能の無駄はやりがいがあると思います.
信仰は対象に向かっている.
 
ありがとうございます