设计模式不是你想要用它的时候去套他,而是根据业务场景选择。设计模式属于经验的总结,是用来解决复杂问题的,把复杂的问题简单化。
工厂模式 只对结果负责,不要三无产品
例子:生产方式的转变:小作坊->工厂->流水线,从无到有自己玩,到发明一个小作坊,到慢慢专业化的状态,生产细节只掌握在某一部分人手里,后来工厂有拆分为专职工厂,工厂之间协作的模式。同时在Spring中也有例子:BeanFactory。
单例模式 保证独一无二
在整个系统运行阶段,为了减少浪费提高资源重复利用的时候,只有一个实例。可以考虑采用单例模式的场景:配置文件、IOC容器、监控程序等只有一个的情况下。Spring中最常用的事注册登记式。工厂也有可能是单例,工厂创建的Bean也有可能是单例。
原型模式 孙猴子的毛
核心就是复制。Sring中用到原型模式就是希望配置信息能够被重复使用并且不被干扰。技术手段:(1)实现cloneable接口,重写clone方法。(2)字节码操作。(3)反射机制。Spring中使用的事反射机制。字节码操作效率最高。
代理模式 办事找代理
应用场景:中介、黄牛经纪人。代码场景主要是:字节码增强、动态实现非侵入式编程。对于一个事情,代理模式只参与一部分,如果参与所有的事,那就是委托模式。
策略模式 为目的什么都可以
应用场景:旅游路线,出行方式的选择。代码场景:算法的选择。使用策略模式可以巧妙的避免了if/switch等语句。
模板方法 流程标准化,原料自己加
流程固定,某一个环节有差异。