V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JoiT
V2EX  ›  编程

关于 C#类中成员变量初始化的问题。

  •  1
     
  •   JoiT · 2015-04-28 14:51:38 +08:00 · 2892 次点击
    这是一个创建于 3527 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个接口:

    public interface IAnimal
    {
        void doSomeThing();
    }
    

    有麽牢牢的实现

    //有好多个IAnimal接口的实现
    //这里就不列举了
    

    然后比如有一个控制器或者其他一些什么类也好:

    public class HomeController
    {
       private readonly IAnimal _animal;
       public Dog()
       {
           IAnimal animal;       
           animal=_animal;
       }
       //......
       //......       
    }
    

    接着就疯狂地进行DI也好,new也好,总之就是搞了相应的对象出来。

    然后就在Dog类下面的操作中疯狂地使用animal这个业务接口了。

    这个样子做初始化业务层的好处是什么?

    1 条回复    2015-05-19 01:48:27 +08:00
    puncsky
        1
    puncsky  
       2015-05-19 01:48:27 +08:00
    方便之处在于,

    1. 传递同一类对象。你自己也说了,只要是IAnimal,无论是DI也好,new也好,无论是单个animal还是一群animal都可以同过这个 IAnimal 从别处传递过来。否则一堆相似的类传进来,用不同的类型接,很冗余。
    2. 对同一类对象执行同样的操作 e.g. foreach loop,

    foreach(IAnimal a in animals) {
    a.doSomething();
    }

    这样就省去了一堆相似的类却要写好多个 foreach loop
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1055 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:03 · PVG 04:03 · LAX 12:03 · JFK 15:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.