接口在类之间进行通信

时间:2015-04-26 13:31:06

标签: c# oop interface

说两个类之间的接口通信是对的吗?就像它可以从B类发送信息到C类?这两个类都继承了相同的接口。

这个例子我读了

  

让我们以你的“手”为例。 “手”是一个类。你的身体有两个“手”类型的物体,名为“左手”和“右手”。它们的主要功能由通过肩部(通过接口)发送的一组电信号控制或管理。所以肩膀是你的身体用来与你的手互动的界面。手是一个设计良好的类。通过稍微改变它的属性,手被重新用于创造左手和右手。

这只指定接口控制或管理类,我同意这一点,但不知怎的,我知道接口可以将数据从一个类转移到另一个类,所以如果我们定义这样的接口或说是正确的我们为此目的使用界面

  

接口在两个类之间创建通信,例如在ClassA和ClassB中继承的接口Iabc,然后它可以将ClassA的信息发送到ClassB。

public interface  Interface1
{
    void  Method1(string msg);
     void Method2(string msg1 ,string msg2);
}
 public static class  HelperClass
 {
     public static void Method1(Interface1 obj ,string msg)
     {
         obj.Method1(msg);
     }

     public static void Method2(Interface1 obj,string msg1, string msg2)
     {
         obj.Method2(msg1,msg2);
     }
 }
  static void Main(string[] args)
    {
        var Car = new Vehcile();
        var HS = new Person();
        Car.per= "Car Clss";
        HS.per = "HS Clss";
        HelperClass.Method1(Car, Car.per);
        HelperClass.Method1(HS, HS.per);
        HelperClass.Method2(Car, Car.per, HS.per);
        HelperClass.Method2(HS, HS.per, Car.per);
        Console.ReadKey();
    }

     public class Person : Interface1
 {

    public String per;

     void Interface1.Method1(string msg)
    {
        Console.WriteLine(msg);
    }

    void Interface1.Method2(string msg1, string msg2)
    {
        Console.WriteLine("Person Class" + msg1 + " " + msg2);
    }
}

 class Vehcile : Interface1
{
    public String per;

     void Interface1.Method1(string msg)
    {
        Console.WriteLine(msg);
    }

    void Interface1.Method2(string msg1, string msg2)
    {
        Console.WriteLine("Vehcile Class" + msg1 + " " + msg2);
    }
}

1 个答案:

答案 0 :(得分:5)

  

说两个类之间的接口通信是对的吗?

我不会这样定义接口。我会看一个像绑定合同的界面。合同规定:"任何实现此接口的人都必须能够执行合同定义的任何操作。"

例如:

public interface IHand
{
    void Shake(IHand otherHand);
}

public class Hand : IHand
{
    public void Shake(IHand otherHand)
    {
        Console.WriteLine("Shook the other hand");
    }
}

IHand是一个接口,它声明了一个名为Shake的方法,它接收IHand的另一个对象。任何实现我们接口的类都必须提供一个名为Shake的方法,它可以做一些事情。

在这个特定的例子中,我们的Hand类每次动摇另一只手时都会写入控制台。

通过界面,我们可以创建抽象。这意味着,我们可以依赖仅合同,而不是依赖于具体的类(例如Hand)。这意味着,任何实现IHand的对象对我们都没有问题,因为我们可以保证他们可以调用Shake方法。 Shake方法中发生的事情超出了我们的范围,我们通常并不关心。