刚看了一点Spring .NET, 从第一个例子MovieFinder说起

看类图关系,一个MovieList类引用一个IMoveFinder对象,ImoveFinder有一个FindAll()的方法,此例中由SimpleMovieFinder 实现。实际上就是由SimpleMovieFinder 实现ImoveFinder接口,而MovieLister只知道ImoveFinder接口,是运行时动态确定ImoveFinder究竟是怎么实现的。

 几本思想就是:多态 +  面向接口编程

 

在Spring .Net中是用  Injection 的方式实现的。把 MovieList看作一个容器,在Config中声明。

 <objects xmlns="http://www.springframework.net">

     < object  name ="MyMovieLister"
      type
="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder" >
     </ object >
   </ objects >
 
 把 SimpleMovieFinder作为 Inject(注入)MovieList的对象。也在Config中声明
< object  name ="MyMovieFinder"
        type
="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder" />

 </object>


把两个对象关联起来,在Config中完整的配置如下

< objects  xmlns ="http://www.springframework.net" >
     < object  name ="MyMovieLister"
      type
="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder" >
         <!--  using setter injection...  -->
         < property  name ="movieFinder"  ref ="MyMovieFinder" />
     </ object >
     < object  name ="MyMovieFinder"
        type
="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder" />
     </ object >

</objects>  


  <property name="movieFinder" ref="MyMovieFinder"/>

是根据 MovieLister的属性来配置的

 

private IMovieFinder _movieFinder; 

public IMovieFinder MovieFinder

        {
            get
            {
                return _movieFinder;
            }
            set
            {
                _movieFinder = value;
            }
        }

 

  MovieLister 中 IMovieFinder 的一个引用,需要做的就是把一个IMovieFinder 的实现注入给它,就是用注入的对象实例化这个接口。

 

有人可能问了:这个用代码的方式也很容易实现,为啥要用配置的方式呢?我也刚看了一小会,知道究竟怎么个回事了再说!

 

或者哪位大师知道用配置方式实现的好处,可以先透露一下!! 

 
 

转载于:https://www.cnblogs.com/waxic/archive/2012/06/09/2543527.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值