有关概念" Interface as a contract "的示例代码,用于描述术语调用方和被调用方的状态和角色?



在许多书籍或文章中,你可能会看到这样一个关于接口的定义:接口是使用者(调用者)和提供者(被调用者)之间的"合同"或协议。但遗憾的是,没有一个清晰的例子来描述什么是调用者类或什么是被调用者类,并展示它们如何相互通信其他通过接口。

从这个角度来看,我对caller(consumer)和callee(provider)这两个术语感到困惑,我只知道我们定义了一个接口,而类实现了这个接口。实现者类是否被视为调用者如果是,那么被调用者

如有任何帮助,我们将不胜感激。

实现接口的是被调用者,因为他提供了接口的实现。使用者是使用被调用者的对象的人,所以他们称之为调用者

编辑

pulbic interface IPlugin
{
    double Calculate(double d1, double d2);
}
public class WebConnectPlugin: IPlugin
{
   public double Calculate(double d1, double d2){ // some code}
}
public class DBConnectPlugin: IPlugin
{
   public double Calculate(double d1, double d2){ // some code}
}

代码中的某个位置:

public class CallerIDE
{
   IPlugin plugin= null; 

   public void DoSomething()
   {
      contractor = GetPlugin();
      double value = contractor.Calculate(10.3456, -3.546456);
   }
   private IPlugin GetPlugin()
   {
      return new WebConnectPlugin();
      return new DBConnectPlugin(); //based on some logic
   }
}

学校是许多个人前来学习的地方。每个人都有不同的学习方式。

学校有一条规则:任何进来的个人都必须是可学习的。

学校确信,如果一个人不可学习,那么它就不能教他们,因此
他们不能学习。

每个个人都实现ILEARNABLE接口

public  class INDIVIDUAL : ILEARNABLE //this is provider class as it provides implementation of interface.
{
    LEARN()
     {
        //WAY OF LEARNING IS MENTIONED HERE...
     }
}

学校通过一种叫做Teach()的方法来教他们

class SCHOOL  // This is consumer class -
{
   void Teach (ILEARNABLE  anyone)
   {
     ...     
     anyone.LEARN();
     ... some code...
   }
}

在这里,学校不必担心谁是个体,只要他们已经实现了可学习的接口。

调用者将是调用实现接口的东西的代码。Callee将是一个实现接口的对象。尽管人们很少使用这个术语。

以下是(受java启发的)伪代码中的一个示例:

interface readable {
    function read();
}
//callee
class book implements readable {
    function read() {
        print this.text;
    }
    //other implementation code goes here
}
//caller
define readable b = new book();
b.read();

相关内容

最新更新