深入理解依赖注入(Dependency Injection)

本来想自己写1下对依赖注入(Dependency Injection,简称DI)的理解,发现这篇文章已经写的比较全面和深入,并且易懂,遂转,希望能够给各位带来1定的帮助。

目录

1. IGame游戏公司的故事

1.1 讨论会

1.2 实习生小李的实现方法

1.3 架构师的建议

1.4 小李的小结

2. 探究依赖注入

2.1 故事的启迪

2.2 正式定义依赖注入

3. 依赖注入那些事儿

3.1 依赖注入的类别

3.1.1 Setter注入

3.1.2 Construtor注入

3.1.3 依赖获取

3.2 反射与依赖注入

3.3 多态的活性与依赖注入

3.3.1 多态性的活性

3.3.2 不同活性多态性依赖注入的选择

4. IoC Container

4.1 IoC Container出现的必然性

4.2 IoC Container的分类

4.2.1 重量级IoC Container

4.2.2 轻量级IoC Container

4.3 .NET平台上典型IoC Container推介

4.3.1 Spring.NET

4.3.2 Unity

参考文献

1. IGame游戏公司的故事

1.1 讨论会

话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界、梦幻西游这一类的游戏)。一般这类游戏 都有一个基本的功能,就是打怪(玩家攻击怪物,借此获得经验、虚拟货币和虚拟装备),并且根据玩家角色所装备的武器不同,攻击效果也不同。这 天,IGame公司的开发小组正在开会对打怪功能中的某一个功能点如何实现进行讨论,他们面前的大屏幕上是这样一份需求描述的ppt:
Continue reading “深入理解依赖注入(Dependency Injection)”

自己写的1个简单但易懂实用的广告幻灯片切换代码

代码比较简单,可操作性较强,可以自己组合。主要使用的是jquery的自有功能实现,我把代码贴出来,有空的可以参考1下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>

<style>
* {font-family: "Lucida Grande" , "微软雅黑" , "宋体" , "黑体" , "幼圆" , "隶书" , "华文行楷", Verdana, Lucida, Arial, Helvetica, sans-serif;}
body {
    font-size:12px;
    border:0px;
    font-variant: normal;
    color: #bcbcbc;
    text-decoration: none;
    margin: 0px;
    padding: 0px;
    background-color: #fff;
    width:100%;
}
ul,li,ol,dl,dt,dd,form{padding:0px;margin:0px;}
li{ list-style:none}
form,img { border:none;}
.left{ float:left;}
.right{ float:right}
.clear{ clear:both}
.buttons li a {width:100px;height:50px; background:#069; display:block}
.buttons li a:hover{ background:#CCC}
.buttons li a.mouseover{background:#CCC}  /* 定义鼠标移上的效果*/
</style>

<script type="text/javascript">
//焦点图功能
$(function(){
    var ad_img = $("#imgs"); //定义幻灯图片组的id,可以根据实际情况修改
    var ad_button = $("#buttons"); //定义幻灯按钮组的id,可以根据实际情况修改
    var ad_imgs = ad_img.find("li");  //图片组的li集合
    var ad_buttons = ad_button.find("li") //按钮组的li集合
    var ad_mouseoverCls="mouseover" //定义鼠标移上的class的名称,可以根据实际情况修改
    ad_imgs.hide() //默认将图片组隐藏
    ad_imgs.eq(0).show() //默认将第1张图片显示
    var ad_i = 1; //计数器,默认从第2张图片开始淡入
    ad_buttons.mouseover(function(){
        ad_i = ad_buttons.index(this); //鼠标移上的是第几个
        ad_imgs.hide()
        ieFilter(ad_imgs[ad_i]); //执行滤镜
        ad_imgs.eq(ad_i).show(); //将对应的图片显示
        ad_buttons.find("a").removeClass(ad_mouseoverCls);
        ad_buttons.eq(ad_i).find("a").addClass(ad_mouseoverCls);
        })

    //如果是ie浏览器则执行滤镜
    var ieFilter = function(o){
        if($.browser.msie){
            $(o).css("filter","progid:DXImageTransform.Microsoft.RevealTrans(Duration=1, Transition=23)") //设置滤镜
            o.filters[0].apply();
            o.filters[0].    transition=23; //每次出现不同样式
            o.filters[0].play();
            }
        }
    var ad_autoMarquee = function(){
        if(ad_i<ad_imgs.length){
            ad_imgs.hide()
            ieFilter(ad_imgs[ad_i]); //执行滤镜
            ad_imgs.eq(ad_i).show(); //将对应的图片显示
            ad_buttons.find("a").removeClass(ad_mouseoverCls);
            ad_buttons.eq(ad_i).find("a").addClass(ad_mouseoverCls);
            ad_i++; //将计数器增1
            }else{
                ad_i=0; //重置计数器
                }
        }
    var focusAd = setInterval(ad_autoMarquee,3000)
    })    
</script>
</head>

<body>
<div >
<div id="imgs">
    <ul>
    <li><img src="Chrysanthemum.jpg" /></li>
    <li><img src="Desert.jpg" /></li>
    <li><img src="Hydrangeas.jpg" /></li>
    </ul>
</div>
<div     class="right buttons" id="buttons">
    <ul>
    <li><a href="#">1</a></li>
    <li><a href="#">2</a></li>
    <li><a href="#">3</a></li>
    </ul>
</div>
</div>
<div     class="clear"></div>
<h1><a href="http://zhuoyue.me">卓越.Me</a></h1>
</body>
</html>

你也可以看1下在线演示的效果:http://demo.zhuoyue.me/js/Ad/zi-ji-bian-xie-de-jian-dan-yi-dong-de-huan-deng/
当然你可以把源代码和图片下载下来:自己编写的简单易懂实用的广告幻灯代码

不错的Jquery幻灯插件KinSlideshow

今天同事在做某个项目的前端代码的时候,由于页面自身有多处幻灯效果需要展现,从网络某处找到1款叫KinSlideShow的Jquery幻灯插件,出于兴趣爱好我自己也测试了1下,感觉不错,遂收藏。
应用该插件最简单的代码:

$(function(){
    $("#KinSlideshow").KinSlideshow();
})

更多的方法和属性可以查看演示:http://demo.zhuoyue.me/js/KinSlideshow/
此处下载完整源代码KinSlideshow源代码包,下载之前,请对我的分享表示支持,评论1下哈。