接口的作用和使用实例(何为紧耦合和松耦合)

本文通过对比紧耦合和松耦合的编程方式,详细解释了如何利用接口来降低代码之间的耦合度,提高软件的灵活性和可维护性。通过具体的C#代码示例,展示了接口在实际项目中的应用,以及它如何帮助我们在不修改现有代码的情况下,轻松替换或扩展功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在介绍接口Interface的主要功能之前,我们先介绍一下什么是紧耦合

class Program
    {
        static void Main(string[] args)
        {
            var engine = new Engine();
            var car = new Car(engine);
            car.Run(3);
            Console.WriteLine(car.Speed);
        }
    }

    class Engine
    {
        public int RPM { get; private set; }
        public void work(int gas)
        {
            this.RPM = 1000 * gas;
        }
    }

    class Car
    {
        private Engine _engine;
        public Car(Engine engine)
        {
            this._engine = engine;
        }
        public int Speed { get;private set; }

        public void Run(int gas)
        {
            _engine.work(gas);
            this.Speed = _engine.RPM / 100;
        }
    }

紧耦合的编程:
倘若Engine类出现错误,如误写为this.RPM = 0;
则在大项目中难以定位修改这个问题,因此引入接口减少耦合程度。

接口是一组契约,用来约束一组功能,这组功能的调用者是被约束的,被约束为只能调用这组接口里所规定的功能(接口里没包含的功能看不见也调用不了),而且调用者不用关心这些功能由谁提供,接口来保证这些功能都稳定可靠。
1772487-20191005150523920-744217716.png


    class Program
    {
        static void Main(string[] args)
        {
            var user = new User(new Iphone());
            user.UsePhone();
        }
    }
    interface IPhone
    {
        void Dail();
        void PickUp();
        void Send();
        void Receive();
    }


    class User
    {
        private IPhone _phone;
        public User(IPhone phone)
        {
            this._phone = phone;
        }
        public void UsePhone()
        {
            _phone.Dail();
            _phone.Dail();
            _phone.Dail();
        }
    }

    class XiaoMiPhone:IPhone 
    {
        public void Dail() { Console.WriteLine("Are U Ok?"); }
        public void PickUp() { Console.WriteLine("Hello?"); }
        public void Send() { Console.WriteLine("Think You!"); }
        public void Receive() { Console.WriteLine("Think You Very Much!"); }
    }

    class Iphone : IPhone
    {
        public void Dail() { Console.WriteLine("Buy?"); }
        public void PickUp() { Console.WriteLine("Buy??"); }
        public void Send() { Console.WriteLine("Buy???"); }
        public void Receive() { Console.WriteLine("Buy????"); }
    }
}

通过接口只需要更改

var user = new User(new Iphone());
var user = new User(new XiaoMiPhone());

就可以换手机。
通过引入接口极大降低了耦合度,即为松耦合。

转载于:https://www.cnblogs.com/maomaodesu/p/11624827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值