在讲策略模式之前,我先来讲一下我工作中遇到的一个案例:
Demo
工作中有一个项目是协同办公软件,里面有一个动态功能,需要将客户对项目的不同操作的动态即时同步出来。假设有以下四个动态:新增了xx项目,更新了xx项目,删除了xx项目,还原了xx项目。
如果是有你来做,你会怎么做?
整理了最新2020整理收集的一线互联网公司面试真题(都整理成文档),有很多干货,包含netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在面试这块讲的非常清楚:
有需要的小伙伴可以戳这里免费领取,暗号:CSDN
我们很有可能写出下面的代码:
public class Message {
public void changeMessage(int flag){
if (flag.equals(MessageEnum.PROJECT_UPDATE.getCode())){
// 动态显示:更新了xx项目
messageEntity.setContent(userName+MessageEnum.PROJECT_UPDATE.getMessage()+" "+message.getName());
messageEntity.setSource(MessageSourceEnum.SOURCE_PROJECT.getCode());
messageEntity.setTitle(MessageEnum.MESSAGE_TITLE.getMessage());
}
if (flag.equals(MessageEnum.PROJECT_INSERT.getCode())){
// 动态显示:新增了xx项目
messageEntity.setContent(userName+MessageEnum.PROJECT_INSERT.getMessage()+" "+message.getName());
messageEntity.setSource(MessageSourceEnum.SOURCE_PROJECT.getCode());
messageEntity.setTitle(MessageEnum.MESSAGE_TITLE.getMessage());
}
if (flag.equals(MessageEnum.PROJECT_DELETE.getCode())){
//动态显示:删除了xx项目
messageEntity.setContent(userName+MessageEnum.PROJECT_DELETE.getMessage()+" "+message.getName());
messageEntity.setSource(MessageSourceEnum.SOURCE_PROJECT