接口、依赖反转

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Miscellaneous_Files
{
    class Program
    {
        static void Main(string[] args)
        {
            DeskFan fan = new DeskFan(new PowerSupply());
            Console.WriteLine(fan.Work());
        }
    }
    public interface IPowerSupply  //电源接口
    {
        int GetPower();
    }
    public class PowerSupply : IPowerSupply   //实现电源接口。意思是和它要电,就给电了
    {
        public int GetPower()
        {
            return 100;   //给电值
        }
    }
    public class DeskFan    
    {
        private IPowerSupply _powerSupply;    //紧耦合
        public DeskFan(IPowerSupply powerSupply)
        {
            this._powerSupply = powerSupply;
        }
        public string Work()
        {
            int power = _powerSupply.GetPower();
            if (power <= 0)
            {
                return "Won't work";
            }
            else if (power < 100)
            {
                return "Slow";
            }
            else if (power < 200)
            {
                return "Work fine";
            }
            else { return "Warning !"; }
        }
    }

}

这段代码是一个简单的示例,展示了在C#中如何使用接口和依赖注入的概念。依赖注入是一种设计模式,它允许我们将一个对象(服务)注入到另一个对象(客户端)中,而客户端对象不需要知道服务的具体实现。

下面是代码的工作原理:

  1. IPowerSupply 接口: 这个接口定义了一个名为 GetPower 的方法,返回一个整数。
  2. PowerSupply 类: 这个类实现了 IPowerSupply 接口,并提供了 GetPower 方法的具体实现,该方法简单地返回100。
  3. DeskFan 类: 这个类有一个名为 _powerSupply 的私有字段,是 IPowerSupply 类型的。它还有一个构造函数,该构造函数接收一个 IPowerSupply 类型的参数,并将其赋值给 _powerSupply 字段。这个类还有一个 Work 方法,该方法使用 _powerSupply 来获取电力,并根据电力的多少返回不同的字符串。
  4. Program 类: 这是主程序入口,它创建了一个 DeskFan 对象,并将一个新的 PowerSupply 对象作为参数传递。然后,它调用 Work 方法并打印返回的字符串。

当你运行这个程序时,它将打印出 "Work fine",因为电力供应(100)在100到200之间。

这段代码的工作原理是展示了依赖注入和接口的基本使用,让我们可以在运行时改变 PowerSupply 的实现,而不需要改变 DeskFan 类的代码。这是一种使代码更灵活、可测试性更好的方法。

其中,IPowerSupply 是一个接口,而不是一个类。在 C# 中,接口是一种引用类型,就像类一样。因此,你可以使用接口名来声明一个字段,该字段的类型可以是实现了该接口的任何类的实例。在 DeskFan 类中,_powerSupply 字段是 IPowerSupply 类型的,这意味着它可以引用任何实现了 IPowerSupply 接口的类的实例。这样做的好处是,你可以随时更改 _powerSupply 字段引用的类的类型,只要这个类实现了 IPowerSupply 接口,而无需更改 DeskFan 类的代码。这是依赖注入和接口的主要优点之一。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值