优秀的编程知识分享平台

网站首页 > 技术文章 正文

C# 接口操作(c#接口代码)

nanyue 2024-07-19 23:57:11 技术文章 24 ℃

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。


要求如下:

1. 要有联动性,老鼠和主人的行为是被动的

2. 考虑可扩展性,猫叫叫声可能引起其它的联动效应。

3. 全部使用接口实现

提示:

(一) 受影响的对象的反应的接口。

(二) 叫针对的对象的接口。

(三) 考虑猫叫对多个对象都有影响,在构造函数中加入受影响的对象的集合。

(四) 猫叫后,所有老鼠对象产生反应。
先创建一个影响的接口:

public interface Ieffect

{

void Response();//响应的方法

}

接着再创建一个动物的接口:

interface IAnimal
{
void AddEffect(Ieffect effect);//添加影响
} 
创建一个猫类,实现动物接口
class Cat:IAnimal
{
IList<Ieffect> list;

#region IAnimal 成员

public Cat()
{
list = new List<Ieffect>();
}
public void AddEffect(Ieffect animal)
{
list.Add(animal);
}

#endregion

public void Bark()
{
Console.WriteLine("猫叫了一声");
foreach (Ieffect ef in list)
{
ef.Response();
}
}
} 
创建一个主人类,实现被影响的接口
class Master:Ieffect
{

public Master(IAnimal animal)
{
animal.AddEffect(this);
}

#region Ieffect 成员

public void Response()
{
Console.WriteLine("主人被惊醒了");
}

#endregion
}
创建一个老鼠类,实现被影响的接口:
class Mouse:Ieffect
{
private string name;
public Mouse(string name,IAnimal animal)
{
this.name = name;
animal.AddEffect(this);
}

#region Ieffect 成员

public void Response()
{
Console.WriteLine("{0},开始逃跑!",this.name);
}

#endregion
}
测试类:
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();

Mouse m1 = new Mouse("大老鼠", cat);
Mouse m2 = new Mouse("小老鼠",cat);
Master mst = new Master(cat);

cat.Bark();
}
}
接口是不是很好玩?快去试试吧!~~~~
最近发表
标签列表