以图书馆管理系统为背景,还书流程包含更新书的借阅状态、计算读者账户的逾期费、支付费用等,希望提供函数实现一键式处理。
class BookState {
public:
void Refresh() {
//刷新
}
};
class FineCalPolicy {
public:
int Calc() {
//计算费用
}
};
class FinePay {
public:
void PayFine();
};
class Client {
public:
void OneButtonReturn() {
bookst_.Refresh();
cal_.Calc();
pay_.PayFine();
};
private:
BookState bookst_;
FineCalPolicy cal_;
FinePay pay_;
};
接口OneButtonReturn
暴露了内部实现,客户不必知道内部知识,同时考虑未来新需求,可以把这些封装到一个类,新类提供接口,
class Facade{
public:
void OneButtonReturn() {
//具体实现
}
private:
BookState bookst_;
FineCalPolicy cal_;
FinePay pay_;
}
class Client {
public:
void OneButtonReturn() {
facade_.OneButtonReturn();
}
private:
Facade facade_;