前言
日常开发中,我们往往容易陷入流水线式的编码习惯,业务逻辑跑通就行。但要想写出高质量、易维护的代码,使用设计模式优化业务逻辑是关键。今天聊聊实际工作中高频使用的几种设计模式。
1. 策略模式
1.1 业务场景
假设大数据系统推送文件过来,需要根据不同类型采取不同的解析方式。新手通常会写成这样:
if(type == "A") {
// 按 A 格式解析
} else if (type == "B") {
// 按 B 格式解析
} else {
// 默认格式解析
}
这种写法的问题很明显:分支多了代码臃肿,难以维护;新增类型时还得修改原有逻辑,违背了面向对象编程的开闭原则和单一职责原则。如果条件分支可以封装替换,就该考虑用策略模式。
1.2 核心定义
策略模式定义了一系列算法,把它们封装起来,让它们可以相互替换。算法的变化独立于使用算法的客户。
通俗点说,就像约会不同性格的女生,有的适合看电影,有的适合逛街,目的都是'追到',只是策略不同。针对一组算法,将每个算法封装到具有共同接口的独立类中,实现灵活切换。
1.3 实战落地
在 Spring 环境下,我们可以利用 ApplicationContextAware 接口自动管理策略实例。
第一步:定义策略接口
public interface IFileStrategy {
// 标识属于哪种文件解析类型
FileTypeResolveEnum gainFileType();
// 具体的解析逻辑
void resolve(Object objectParam);
}
第二步:实现具体策略
@Component
public class AFileResolve implements IFileStrategy {
@Override
public FileTypeResolveEnum gainFileType() {
return FileTypeResolveEnum.File_A_RESOLVE;
}
@Override
{
logger.info(, objectParam);
}
}


