0
点赞
收藏
分享

微信扫一扫

C# 接口与依赖反转

回望这一段人生 2022-02-17 阅读 54
using System;

namespace IndependenceReverseTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            //通过传入不同的对象new PowerSupply() 与 new BadPowerSupply()
            //DeskFan 中的IpowerSupply _powerSupply 可以实现不同的方法
            //DeskFan 的构造函数也是IpowerSupply 类型, 可以传入继承IpowerSupply的一切方法
            var test1 = new DeskFan(new PowerSupply());
            var test2 = new DeskFan(new BadPowerSupply());
            Console.WriteLine(test1.Work());
            Console.WriteLine("--------------------");
            Console.WriteLine(test2.Work());
            Console.ReadKey();
        }

        interface IpowerSupply
        {
            int GetPower();
        }


        class PowerSupply : IpowerSupply
        {
            public int GetPower()
            {
                return 100;
            }
        }

        class BadPowerSupply : IpowerSupply
        {
            public int GetPower()
            {
                return 500;
            }
        }

        class DeskFan
        {
            private IpowerSupply _powerSupply;

            public DeskFan(IpowerSupply powerSupply)
            {
                _powerSupply = powerSupply;
            }

            public string Work()
            {
                int power = _powerSupply.GetPower();
                if (power <= 0)
                {
                    return "Can not work!";
                }
                else if (power < 100)
                {
                    return "Slow!";
                }
                else if (power < 200)
                {
                    return "Work fine!";
                }
                else
                {
                    return "FBI Waring!";
                }
            }
        }
    }
}

举报

相关推荐

0 条评论