项目经理问我,你还在用switch/case?面向接口编程,彻底告别switch/case,高逼格

本文介绍了一种使用接口和枚举替代传统switch/case语句的方法,通过实例展示了如何设计低耦合、高扩展性的代码结构。

今天撸代码的时候,遇到一个根据type不一样,作很多处理的事情功能,我的第一想法就是if/else,或者switch/case来解决,项目经理看了我的代码,很不屑的问了一句:“你还在用switch/case?”。
看着我迷离的眼神,项目经理提笔写下了如下代码。
今天要说的是用接口的方式来取代switch/case,扩展性高,可读性高,关键是逼格高,我的观念就是:做人可以没有逼格,写的代码一定是要有逼格的。
先简单描述一下功能,一个类有n个type,前端传一个type过来,我们根据type来做不同的处理。
主要思路:初始化一个类ContextHolder,根据type,去select不同的实现类,然后做主要的逻辑处理,下面直接上代码(下面的代码忽略命名,忽略包名路径)。
在这里插入图片描述

1.我们现在SpringBoot的启动类里的run方法里加载ContextHolder

Class.forName("xxx.xxx.MazeContextHolder");

2.ContextHolder的具体实现
这个类里面主要就是加载具体的实现类,然后实现筛选的父类

public class MazeContextHolder {

    private static final Map<MazeGridTypeEnum, BaseMazeGridTypeInitializer> holder = new HashMap<>();
    private static final List<BaseMazeGridTypeInitializer> baseActivityInitializers = new ArrayList<>();
//静态代码块里面加载的都是type的实现类,放入内存
    static {
        Stri
在单片机程序设计中,Switch/Case语句虽然直观,但面对复杂的逻辑分支时,会导致代码冗长、难以维护。为了解决这一题,函数指针提供了一种优雅的替代方案。函数指针可以指向特定的函数,允许程序动态地根据条件执行不同的函数,从而替代固定结构的Switch/Case。 参考资源链接:[函数指针优化:替代单片机复杂Switch/Case编程](https://wenku.youkuaiyun.com/doc/6401ad0bcce7214c316ee15c?spm=1055.2569.3001.10343) 例如,在处理不同类型的事件时,可以定义一组函数来处理每种事件,并使用函数指针数组来存储这些函数的地址。当需要处理某个事件时,只需通过索引或者条件运算符选择对应的函数指针并调用即可。 这种结构的代码更加模块化,每个处理函数都可以单独开发和测试,这不仅增强了代码的可读性,也使得在需要添加或修改事件处理逻辑时,可以简单地增加或替换相应的函数,而不需要深入到复杂的Switch/Case结构中。 具体实现时,可以定义一个函数指针类型,并声明一个该类型的数组或结构体,用以存储指向各个处理函数的指针。然后根据运行时的需求,通过索引或其他方式选取适当的函数指针,调用它所指向的函数。这样,原本由Switch/Case语句完成的分支逻辑,就被转移到了函数的组织和调用上。 最终,使用函数指针替代Switch/Case结构能够简化代码结构,提升程序的可读性、可维护性,并为未来的逻辑修改和功能扩展提供便利。更多关于如何利用函数指针优化单片机编程的细节和案例,可以参阅《函数指针优化:替代单片机复杂Switch/Case编程》一书,该书深入探讨了函数指针的应用技巧和优化策略,帮助程序员编写出更加效、清晰的程序代码。 参考资源链接:[函数指针优化:替代单片机复杂Switch/Case编程](https://wenku.youkuaiyun.com/doc/6401ad0bcce7214c316ee15c?spm=1055.2569.3001.10343)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值