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

2015-04-28 14:51:38 +08:00
 JoiT

有一个接口:

public interface IAnimal
{
    void doSomeThing();
}

有麽牢牢的实现

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

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

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

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

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

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

2728 次点击
所在节点    编程
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX