VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之C# Ioc、DI、Unity、TDD的一点想法和实践

面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP)。

依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念)

控制反转(IoC):一种反转流、依赖和接口的方式(DIP的具体实现方式)

依赖注入(DI):IoC的一种实现方式,用来反转依赖(IoC的具体实现方式)

IoC容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架)、

Unity:是微软推出的IOC框架

TDD:测试驱动开发,是敏捷开发中的一项核心实践和技术,也是一种设计方法论

 

上面的内容都是抄的(英文不好,放在这里备查),相关的内容看了一些,不明觉厉。

 

曾经写了一个酒店读写房卡的程序,不同的酒店门锁是不一样的,同一个酒店也有可能更换门锁,程序流程:

1.通过Api获取当前酒店的门锁类型

2.如果需要则下载对应门锁的dll

3.实现读写功能

一、定义接口

新建一个类库(Lock.Interface),代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
namespace Lock
{
    public interface ILock
    {
        /// <summary>
        /// 门锁初始化
        /// </summary>
        /// <param name="password">初始化密码</param>
        /// <returns></returns>
        bool Init(int password);
 
    }
}

是不是算是IoC了?(我不确定)

二、单元测试

新建一个单元测试项目(Lock.Tests),代码如下:

1.门锁A单元测试

复制代码
    /// <summary>
    /// 门锁A测试
    /// </summary>
    [TestClass()]
    public class LockATests
    {
        /// <summary>
        /// 初始化,password为正奇数
        /// </summary>
        [TestMethod()]
        public void InitTest()
        {
            ILock l = new LockA();
            var ret = l.Init(1);
            Assert.AreEqual(ret, true);
            ret = l.Init(2);
            Assert.AreEqual(ret, false);
            ret = l.Init(-1);
            Assert.AreEqual(ret, false);
        }

    }
复制代码

2.门锁B单元测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <summary>
/// 门锁B测试
/// </summary>
[TestClass()]
public class LockBTests
{
    /// <summary>
    /// 初始化测试,password为正偶数
    /// </summary>
    [TestMethod()]
    public void InitTest()
    {
        ILock l = new LockB();
        var ret = l.Init(1);
        Assert.AreEqual(ret, false);
        ret = l.Init(2);
        Assert.AreEqual(ret, true);
        ret = l.Init(-1);
        Assert.AreEqual(ret, false);
    }