use*_*536 2 c++ design-patterns if-statement
我有以下代码:
if (book.type == A) do_something();
else if (book.type == B) do_something_else();
....
else do so_some_default_thing.
Run Code Online (Sandbox Code Playgroud)
只要有新书类型或删除书籍类型,就需要修改此代码.我知道我可以使用枚举并使用switch语句.是否有一种设计模式可以删除if-then-else?
与使用switch语句相比,这种模式有哪些优点?
正如其他人所指出的,虚拟功能应该是您的首选.
如果由于某种原因,这对你的设计没有意义/工作,另一种可能性是std::map
使用book.type作为键和指向函数(或函子等)的指针作为关联值,所以你只需要查找特定类型的动作(这几乎就是有多少OO语言实现它们相当于虚拟功能的内幕).