预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

w页码,1/4(W)张张张雪张雪雪雪飞飞飞飞要走的远,就要一起走博客园首页新闻新随笔联系管理订阅随笔-45文章-0评论-380《《《ProASP.NETMVC3Framework》》》学》学学学习笔记习笔记习笔记习笔记之五之五之五之五【【【【依依依依赖赖赖赖注入及注入及注入及注入及ninject工具使工具使工具使用用用】用】】】一,创创创创建松建松建松建松耦耦耦耦合的合的合的合的组组组组件件件件1."分解关注点"是MVC模式里面一个非常重要的特性。我们想要在应用程序里面创建的组件尽可能的独立,这样我们就能管理比较少的依赖关系。理想情况下,每个组件都是孤立的,不知道其他组件的存在,处理应用程序的其他领域仅仅通过抽象接口,这就是所谓的松耦合,它让我们的应用程序更加容易测试和修改。通过一个简单的例子可以帮助我们理解,假如我们想写一个发邮件的组件,暂且就把这个组件命名为MyEmailSender,接着我们实现一个接口,这个接口定义了所有需要发送邮件的功能,也暂且将这个接口命名为IEmailSender。任何其他的应用程序的组件需要引用IEmailSender里面的方法就行了。比如有一个重置密码的组件PasswordResetHelper需要在用户重置密码后发Email:mszhangxuefei@foxmail.com生邮件,下图展示这它们之间的关系:QQ群:198717740腾讯微博:http://t.qq.com/mszhangxuefei昵称:GabrielZhang园龄:1年6个月粉丝:133关注:14通过引入,我们就能够确保在跟之间没有+加关注IEmailSenderPasswordResetHelperMyEmailSender直接的依赖关系。比如,我们可以用其他的实现了发送邮件的Provider来替换当前的MyEmailSender而不会对PasswordResetHelper造成影响,从这里也能够体会到松耦合的好处吧。随随随笔随笔笔笔分分分分类类类类(46)当然并不是所有的组件之间存在的关系都需要用接口来解耦和。这取决于我们的应用程序的复杂程ASP.NETMVC(33)度,需要什么样的测试,长期维护的可能性。我们不用去对一个简单的ASP.NETMVC程序执行解C#.NET点滴耦。F#Lucene.Net/SolrNet使用依赖注入Mono(3)2.MyBatis.NET接口能够帮助我们解耦组件,但是这样仍然面临一个问题,那就是C#并没有提供一种嵌入的方式来比OpenSourceProjects较容易的创建实现接口的对象,因为我们只能创建一个具体实现了接口的组件的实例,比如这里的的Scala/LiftMyEmailSender的实例。像下面的这种方式:WindowsPhone工作点滴(4)算法点滴系统架构publicclassPasswordResetHelper兴趣点滴(3){学习点滴(3)publicvoidResetPassword(){IEmailSendermySender=newMyEmailSender();积积积分积分分分与与与与排名排名排名排名//一些关于邮件的详细积分-42780mySender.SendEmail();排名-2562}}最新最新最新评论最新评论评论评论《》学习笔1.Re:ProASP.NETMVC3Framework我们仅仅做了松耦合的一部分工作,PasswordResetHelper类通过IEmailSender来配置和发送邮记之三十一【模型验证】件,通过接口的实现来创建对象,这里需要创建一个MyEmailSender的实例。这样看来,我们可能引用builderman:写得很好。我觉得算是目前来说,让事情更糟,因为现在的同时依赖和,正最好的mvc3教程了呵呵,在方便我自己的同时也能给PasswordResetHelperIEmailSenderMyEmailSender初学的朋友一点帮助,我非常乐意。其实园子里有很多如下图所显示的那样:针对MVC某一方面的博文都非常好,我只是把书里面的知识整理了下,:-)--GabrielZhang2.Re:《ProASP.NETMVC3Framework》学习笔记之三十一【模型验证】写得很好。我觉得算是目前来说,最好的mvc3教程了--builderman3.Re:《ProASP.NETMVC3Framework》学习笔记之四【领域模型介绍】引用肥象:引用领域元素据(Modelmetadata):元数其实我现在需要一种方式来获取对象(这里就是指上面代码里的mySender),这个对象是