C#使用接口实现多态

作者(出处):百宝箱工作室发布时间:2015年5月5日 11:25:23查阅量:76

第一步:定义多功能打印机接口。这个接口包含三个方法:Print()、Copy()和Fax()

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

namespace InterfaceApplication
{
    /// <summary>
    /// 多功能打印机的接口
    /// </summary>
    interface IMultiPrinter
    {
        //打印功能的接口
        void Print(string content);
        //复印功能的接口
        void Copy(string content);
        //传真功能的接口
        bool Fax(string content);
    }
}

第二步:添加三种打印机(佳能打印机、惠普打印机、爱普生打印机)分别实现多功能打印机的接口。具体代码如下:

(1)添加CanonPrinter类:

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

namespace InterfaceApplication
{
    /// <summary>
    /// 佳能打印机,实现多功能打印机的接口
    /// </summary>
    public class CanonPrinter:IMultiPrinter
    {
        //佳能打印机的打印功能
        public void Print(string content)
        {
            Console.WriteLine("Canon打印机正在打印 "+content);
        }
        //佳能打印机的复印功能
        public void Copy(string content)
        {
            Console.WriteLine("Canon打印机正在复印 " + content);
        }
        //佳能打印机的传真功能
        public bool Fax(string content)
        {
            Console.WriteLine("Canon打印机正在传真 " + content);
            return true;
        }
    }
}

(2)添加HPPrinter类:

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

namespace InterfaceApplication
{
    /// <summary>
    /// 惠普打印机,实现多功能打印机的接口
    /// </summary>
    public class HPPrinter:IMultiPrinter
    {
        //惠普打印机的打印功能
        public void Print(string content)
        {
            Console.WriteLine("HP打印机正在打印 " + content);
        }
        //惠普打印机的复印功能
        public void Copy(string content)
        {
            Console.WriteLine("HP打印机正在打印 " + content);
        }
        //惠普打印机的传真功能
        public bool Fax(string content)
        {
            Console.WriteLine("HP打印机正在传真 " + content);
            return true;
        }
    }
}

(3)添加EpsonPrinter类:

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

namespace InterfaceApplication
{
    /// <summary>
    /// 爱普生打印机,实现多功能打印机的接口
    /// </summary>
    public class EpsonPrinter:IMultiPrinter
    {
        //爱普生打印机的打印功能
        public void Print(string content)
        {
            Console.WriteLine("Epson打印机正在打印 " + content);
        }
        //爱普生打印机的复印功能
        public void Copy(string content)
        {
            Console.WriteLine("Epson打印机正在复印 " + content);
        }
        //爱普生打印机的传真功能
        public bool Fax(string content)
        {
            Console.WriteLine("Epson打印机正在传真 " + content);
            return true;
        }
    }
}

(4)如果还有其他打印机,可以继续添加相应的类,并实现多功能打印机的接口即可。

第三步:使用各种打印机的功能,具体代码如下所示:

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

namespace InterfaceApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用Canon打印机进行打印、复印、传真
            MyPrinter(new CanonPrinter());
            //使用HP打印机进行打印、复印、传真
            MyPrinter(new HPPrinter());
            //使用Epson打印机进行打印、复印、传真
            MyPrinter(new EpsonPrinter());

            Console.ReadLine();
        }
        /// <summary>
        /// 使用接口实现多态
        /// </summary>
        /// <param name="Printer">多功能打印机</param>
        static void MyPrinter(IMultiPrinter Printer)
        {
            Printer.Print("学生成绩表");
            Printer.Copy("学生信息表");
            Printer.Fax("2018级新生录取名单");
        }
    }
}
百宝箱网络工作室  版权所有  
站长QQ:1617818397  站长E-mail:1617818397@qq.com
Powered by www.baibaox.com  Copyright © 2011-2018
点击这里给我发消息