ほとんどの場合、古いコードを扱う場合、あるクラスが単なる呼び出しを別のクラスに転送するという状況があります。何かを制御する古いコントローラがあるとしますが、それらのいくつかは新しいクラスに専念できるとします。さて、古いコントローラは、新しいクラスインタフェースを呼び出します。クラスのインターフェイスの複製
Ex。今
class Controller {
public:
void addObject(const std::string & id,
const Object * obj) {
m_Wrk.addObject(id, obj);
}
private:
Worker m_Wrk;
};
class Worker {
public:
void addObject(const std::string & id,
const Object * obj) {
//do actual adding
}
};
、ソフトウェアのテストについて考えるとき、インターフェイスは、両方のクラスでテストする必要があるかもしれません、コントローラテストの労働者の変更を確認する必要があるとして、それはないほとんどがそうであるように、コントローラでは困難です。
この使用法は特に悪いことですか、上に説明したように既存のコードでこの種のデザインを使用しても問題ありません。
おかげ
「m_Wrk」はポインタでなければなりませんか? – alexeykuzmin0
typoそれは必ずしも必要ではありません。 –
これは本質的にPIMPLではありません。私はその質問を理解するのに苦労していると思う。 ソフトウェアのテストを考えているときは、インタフェースを両方のクラスでテストする必要があります。コントローラでは、作業者の変更を確認する必要がほとんどないため、コントローラではより難しいでしょう。コントローラテスト。 この使用法は特に悪いことですか、上で説明したように既存のコードでこの種のデザインを使用しても問題ありません。 – SmittyBoy