为了更好的扩展性,可以“使用策略模式和多态去掉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的封装、继承、多态和策略模式的理解也会更进一步。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐