小智 6
实现指定两个或多个类型之间的契约。其中一种类型(此处为“哺乳动物接口”)定义合约,另一种类型(猫、狗)承诺执行。
下面的代码是实现的一个懒惰的例子......
#include<iostream>
using namespace std;
class IMammals{
public:
virtual void walk() = 0;
};
class Cats: public IMammals {
public:
void walk() {
cout<< "Cat is walking" << endl;
}
};
class Dogs: public IMammals {
public:
void walk(){
cout<< "Dog is walking" << endl;
}
};
int main(void) {
Cats aCat;
Dogs aDog;
IMammals *ptrMammals = NULL;
ptrMammals = &aCat;
ptrMammals->walk();
ptrMammals = &aDog;
ptrMammals->walk();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用 UML,实现由虚线箭头表示,该箭头从类型二(猫、狗或承包商)类指向类型一类(IMammals 或 Contractee)。箭头的尖端是一个空三角形。
+-----------------+
| IMammals |
|-----------------|
| |
+---------|>| |<|--------+
| +-----------------+ |
| |
| |
+-----+-----+ +-----+-----+
| Cat | | Dog |
|-----------| |-----------|
| | | |
+-----------+ +-----------+
Run Code Online (Sandbox Code Playgroud)