私はC++プロジェクトにファクトリデザインパターンを適用しています。以下に、私がどのように行っているかを示します。「anti-if」キャンペーンに従ってコードを改善しようとしているので、私が持っているifステートメントを削除したいと思います。どうすればいいですか?
typedef std::map<std::string, Chip*> ChipList;
Chip* ChipFactory::createChip(const std::string& type) {
MCList::iterator existing = Chips.find(type);
if (existing != Chips.end()) {
return (existing->second);
}
if (type == "R500") {
return Chips[type] = new ChipR500();
}
if (type == "PIC32F42") {
return Chips[type] = new ChipPIC32F42();
}
if (type == "34HC22") {
return Chips[type] = new Chip34HC22();
}
return 0;
}
文字列をキーとして、コンストラクター(またはオブジェクトを作成するための何か)を使用してマップを作成することを想像します。その後、タイプ(タイプは文字列)を使用してマップからコンストラクターを取得し、ifなしでオブジェクトを作成できます。(私は少しパラノイアになっていることは知っていますが、それができるかどうか知りたいです。)