考虑如下代码:有清除缓冲区,历史记录,cookies等操作
class WebBrowser {
public:
//...
void clearCache();
void clearHistory();
void removeCookies();
};
有用户想一次性执行这些操作,有如下两种方案,提供一个clearEverything
成员函数调用其他三个成员函数
class WebBrowser {
public:
//...
void clearEverything(); // 调用其他三个成员函数
};
以及提供一个非成员函数,来调用其他三个成员函数
void clearBrowser(WebBrowser& wb) {
wb.clearCache();
wb.clearHistory();
wb.removeCookies();
}
但是后者比前者好,因为它使我们能够改变有限事物而只影响有限的客户