通过构造函数进行依赖注入 - 实时应用程序

时间:2013-11-09 05:53:23

标签: c# .net c#-4.0 design-patterns

好的,我只是在学习DI。为了理解它,我在网上经历了一些指示。然后我做了一个非常小的实时场景,只是为了自己理解它。

我正在应用DI构造函数注入模式来计算不同类型客户的产品价格折扣。如果是员工,则有单独的折扣,如果是普通买家,那么它将是一个单独的折扣。我不知道这是否适合在这种情况下应用DI或任何其他更好的解决方案/模式可用。我只是编译了代码,我很高兴它运行。但是,我对此的正确性并不充满信心。并且会感谢对此计划的任何更正,如微调,或者更好的方法等建议。另外,它真的是DI吗?如果这就是所谓的依赖注入,那么我们不是在静态main方法中对类进行硬编码吗?这是对的我在做什么,这是我们在实时场景中做的事情吗?它也会帮助像我这样的人。

class Program
{
    public interface IDiscount
    {
        void Discount(int amount);
    }
    public class ApplyDiscount : IDiscount
    {
        public void Discount(int amount)
        {
            Console.WriteLine("Normal Discount calculated is {0}", amount);
        }
    }
    public class ApplyEmployeeDiscount : IDiscount
    {
        public void Discount(int amount)
        {
            Console.WriteLine("Employee Discount calculated is {0}", amount);               
        }
    }
    public class Compute
    {
        public readonly IDiscount discount;

        public Compute(IDiscount discount)
        {
            this.discount = discount;
        }

        public void ComputeTotal(int productAmount)
        {
            this.discount.Discount(productAmount);
        }
    }
    static void Main()
    {
        IDiscount regularDiscount = new ApplyDiscount();
        IDiscount employeeDiscount = new ApplyEmployeeDiscount();
        Compute c = new Compute(employeeDiscount);
        c.ComputeTotal(200);
        Console.ReadLine();
    }
}

1 个答案:

答案 0 :(得分:2)

我将其分为三部分:

  1. 是/否答案,是的,您注入了依赖项。

  2. 这是一个简短的博客,它将以简单(简短)的方式阐明依赖注入:Blog by James Shore

  3. 重枪:article by Martin Fowler。添加到这里并不多(请注意,长篇文章)