C# 接口

来源:互联网 发布:mac设置手机铃声 编辑:程序博客网 时间:2024/05/22 09:23

C# 接口

简介

对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。
比如:如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。
但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。同时:这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。另外,使用接口还有使用方便,可读性强,结构清晰等优点。
面向接口编程便于团队合作,有了统一的接口(接口是公开的,里面的方法都是public的),无须担心别人的程序无法使用我的实现。

代码示例

using System;namespace 接口{    internal class Program    {        private static void Main()        {            var t1 = new Transaction("001", "8/10/2012", 78900.00);            var t2 = new Transaction("002", "9/10/2012", 451900.00);            var t3 = new Transaction("003", DateTime.Now.ToLongDateString(), 123.00);            t1.ShowTransaction();            t2.ShowTransaction();            /*接口做为参数传递,传递的是实现了接口的对象             *接口作为类型返回,返回的是实现了接口的对象*/                    GetTime(t3);            Console.ReadKey();        }        //接口作为参数,传递的是实现了接口的对象        private static void GetTime(ITransactions t3)        {            t3.ShowTransaction();        }    }    public class Transaction : ITransactions    {        private string tCode;        private string date;        private double amount;        public Transaction()        {            tCode = " ";            date = " ";            amount = 0.0;        }        public Transaction(string c, string d, double a)        {            tCode = c;            date = d;            amount = a;        }        public void ShowTransaction()        {            Console.WriteLine("Transaction: {0}", tCode);            Console.WriteLine("Date: {0}", date);            Console.WriteLine("Amount: {0}", GetAmount());        }        public double GetAmount()        {            return amount;        }    }    public interface ITransactions    {        // 接口成员        void ShowTransaction();        double GetAmount();    }}

输出结果

Transaction: 001
Date: 8/10/2012
Amount: 78900
Transaction: 002
Date: 9/10/2012
Amount: 451900
Transaction: 003
Date: 2017年1月22日
Amount: 123

注意

接口做为参数传递,传递的是实现了接口的对象;
接口作为类型返回,返回的是实现了接口的对象。
接口的传递与返回就是围绕着上面的两句话展开的

0 0
原创粉丝点击