创建一个接口. 新建类->新建接口 . 接口都是I开头, 且默认public 不用写public
接口的作用: 只改变了传入的参数, 就实现了多态, 而且对ErissonPhone和NokiaPhone没有做出修改, 减少了耦合性. 解耦, 松耦合, 功能的提供方可以快速替换
using System;
namespace ConsoleTest1
{
class Program
{
static void Main(string[] args)
{
//多态实现1
//PhoneUser user = new PhoneUser(new NokiaPhone());
/*
PhoneUser user = new PhoneUser(new NokiaPhone());
user.UsePhone();
的结果
Nokia calling...
Nokia Picking...
Nokia Sending...
Nokia Recieving...
*/
PhoneUser user = new PhoneUser(new ErissonPhone());
user.UsePhone();
/*
Erisson calling...
Erisson Picking...
Erisson Sending...
Erisson Recieving...
*/
Console.ReadKey();
//接口的作用: 只改变了传入的参数, 就实现了多态, 而且对ErissonPhone和NokiaPhone没有做出修改, 减少了耦合性
}
}
class PhoneUser
{
private IPhone _phone;
//通过构造函数传入参数, 对字段_phone初始化, 只要是继承 IPhone 接口的类都可以, 并实现其方法
public PhoneUser(IPhone phone)
{
_phone = phone;
}
public void UsePhone()
{
_phone.Dail();
_phone.PickUp();
_phone.Send();
_phone.Recieve();
}
}
interface IPhone
{
void Dail();
void PickUp();
void Send();
void Recieve();
}
class NokiaPhone : IPhone
{
public void Dail()
{
Console.WriteLine("Nokia calling...");
}
public void PickUp()
{
Console.WriteLine("Nokia Picking...");
}
public void Recieve()
{
Console.WriteLine("Nokia Recieving...");
}
public void Send()
{
Console.WriteLine("Nokia Sending...");
}
}
class ErissonPhone : IPhone
{
public void Dail()
{
Console.WriteLine("Erisson calling...");
}
public void PickUp()
{
Console.WriteLine("Erisson Picking...");
}
public void Recieve()
{
Console.WriteLine("Erisson Recieving...");
}
public void Send()
{
Console.WriteLine("Erisson Sending...");
}
}
}