公司不给用设计模式,裂开。跳槽时面试官tm老问项目使用的设计模式,我很无奈。
找来找去都没找到公司项目代码有用到啥设计模式。
我也实习了快4个月了,说实话,也没想到,在哪里用到了设计模式,但是我想我一定用到了单例模式,建造者模式,工厂模式等。在我现在的理解中,一部分的DTO都是建造者模式,通过注解对参数进行约束,通过注入不同的参数,来获得不同的实例。设计模式,我肯定在用,就是体会不到。
告诉你一个简单实用的 , 模板方法模式 , 也就是钩子函数 ;比如你有一个业务 , 逻辑都是第一步干什么第二步干什么一直到最后一步 , 像一个模板一样 , 但是根据不同的情况某些步骤要做不同的处理 , 你就可以在父类写下流程 , 将不同的处理部分写成待完成的方法留给子类实现 ;
以JAVA为例 , 比如业务是处理一个审批的流程 , 可以看到这个流程的处理步骤都是一样的 , 只不过不同的流程他的流程定义Key不同 , 所以把这些方法留给子类实现 , 不会影响流程的处理步骤
public abstract class Process {
public void process() {
if(getState() == 0) {
// 流程状态为0的处理
} else {
// 通过流程定位key开启流程
try {
startProcessByDefKey(getProcessDefKey());
} catch(Exception e) {
failed(e);
}
}
}
private void startProcessByDefKey(String key) {
// 流程处理
}
// 以下方法留给子类实现
// 获取审批状态
protected abstract int getState();
// 获取流程定义key
protected abstract String getProcessDefKey();
// 失败的处理
protected abstract void failed(Exception e);
}
我觉得这个设计模式在面试的时候说起来 , 应该是要比单例 , 工厂等一些设计模式效果要更好一点~
比如我们有些公司里面的校验,有很多个校验,把校验都拆成原子的校验,可以让很多地方都用到,不同的校验会使用不同校验方法的组合,那么你就可以用建造者模式,传入一个list,然后最后这个list中有数据就代表被校验住了,并且把错误信息返回给前端。还有我们经常可以看到页面上面有很多种场景,那么我们可以针对这些场景使用策略模式等等