一个简单例子说明层模式。
#include <iostream>
using namespace std;
class L1Provider
{
public:
virtual void L1Service() = 0;
};
class L2Provider
{
public:
virtual void L2Service() = 0;
void setLowerLayer(L1Provider *l1) { level1_ = l1; }
protected:
L1Provider *level1_;
};
class L3Provider
{
public:
virtual void L3Service() = 0;
void setLowerLayer(L2Provider *l2) { level2_ = l2; }
protected:
L2Provider *level2_;
};
class DataLink : public L1Provider
{
public:
virtual void L1Service() {
cout << "L1 Service working. " << endl;
}
};
class Transport : public L2Provider
{
public:
virtual void L2Service() {
cout << "L2 Service working. " << endl;
level1_->L1Service();
}
};
class Session : public L3Provider
{
public:
virtual void L3Service() {
cout << "L3 Service working. " << endl;
level2_->L2Service();
}
};
int main(int argc, char **argv)
{
DataLink dataLink;
Transport transport;
Session session;
// make relationship
transport.setLowerLayer(&dataLink);
session.setLowerLayer(&transport);
// client invoke
session.L3Service();
return 0;
}
先定义三个抽象的层接口(L1Provider、L2Provider、L3Provider),再定义三个接口的实现,最后建立层级之间的关系。