使用策略模式和多态去掉switch

为了更好的扩展性,可以“使用策略模式和多态去掉switch”(业务逻辑层适用,界面表现层除外,会增加代码的复杂度)。

“使用策略模式和多态去掉switch”的思想如下:

多处使用相同switch时(我觉得这个是前提,如果只有一处使用switch,而且后面基本上不会再扩展,那简单封装一下就可以了,毕竟时间那么宝贵,为啥还多去折腾一下呢?),

1、先将switch代码块封装到一个新class的方法中;

2、然后设计一个抽象基类,它的抽象方法至少包括“获取switch对应的各个type”、“switch对应的各个type下的操作”;

3、再新建多个子类,继承于抽象基类并实现其中的抽象方法;

4、最后,在第一步创建的新class中会声明一个抽象基类变量,封装的switch代码块方法中会根据调用方法时传入的type值,多态的去实例化子类,然后调用子类的实现方法。

具体的代码实现网上也比较多了,这里可以参照一下https://blog.csdn.net/chens616/article/details/85037089

当然,理解了“使用策略模式和多态去掉switch”的思想,那对oo的封装、继承、多态和策略模式的理解也会更进一步。

发布了55 篇原创文章 · 获赞 61 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Agg_bin/article/details/92839080