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