1

好的,我只是在学习 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();
    }
}
4

1 回答 1

2

我将把它分成3部分:

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

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

  3. 重型枪支:Martin Fowler 的文章。没什么可补充的(请注意,很长的文章)

于 2013-11-09T06:15:49.033 回答