个人感悟之设计模式应用场景

设计模式不是你想要用它的时候去套他,而是根据业务场景选择。设计模式属于经验的总结,是用来解决复杂问题的,把复杂的问题简单化。

工厂模式 只对结果负责,不要三无产品

例子:生产方式的转变:小作坊->工厂->流水线,从无到有自己玩,到发明一个小作坊,到慢慢专业化的状态,生产细节只掌握在某一部分人手里,后来工厂有拆分为专职工厂,工厂之间协作的模式。同时在Spring中也有例子:BeanFactory。

 

单例模式 保证独一无二

在整个系统运行阶段,为了减少浪费提高资源重复利用的时候,只有一个实例。可以考虑采用单例模式的场景:配置文件、IOC容器、监控程序等只有一个的情况下。Spring中最常用的事注册登记式。工厂也有可能是单例,工厂创建的Bean也有可能是单例。

 

原型模式  孙猴子的毛

核心就是复制。Sring中用到原型模式就是希望配置信息能够被重复使用并且不被干扰。技术手段:(1)实现cloneable接口,重写clone方法。(2)字节码操作。(3)反射机制。Spring中使用的事反射机制。字节码操作效率最高。

 

代理模式  办事找代理

应用场景:中介、黄牛经纪人。代码场景主要是:字节码增强、动态实现非侵入式编程。对于一个事情,代理模式只参与一部分,如果参与所有的事,那就是委托模式。

 

策略模式  为目的什么都可以

应用场景:旅游路线,出行方式的选择。代码场景:算法的选择。使用策略模式可以巧妙的避免了if/switch等语句。

 

模板方法  流程标准化,原料自己加

流程固定,某一个环节有差异。

posted @ 2018-05-22 19:36  jolivan  阅读(319)  评论(0编辑  收藏  举报