黑马程序员Java设计模式详解, 23种Java设计模式(图解+框架源码分析+实

准备换工作面试,来复习下。先看了单例和工厂。只是举些例子,方便记忆和理解。
1:单例,最常见就是spring中的bean都是单例的。比如你连接池datasource不采用单例模式,你每次使用连接池的地方都new个新对象,浪费资源。但是单例有时候会导致并发不安全,特别是一些喜欢在服务类里放成员变量的同志。
2.工厂模式的话,视频里很多都是啥if else,实际上有很多解决办法。比如spring自动注入个map,或者自己通过反射实现再或者写个枚举,通过enum.values(),放在map里面。
简单工厂,很多用的都是静态工厂方法,除非工厂依赖于其他对象,那就没办法静态了。说白了就是一个要有抽象的意识,不要只会CV。否则到时候改起需求来痛苦死你。
工厂方法的话,我自己代码里没有映像是否用过,我觉得在封装第三方包或者使用第三方依赖是可以用到。当你发现别人的类已经无法满足你的需求,你可以自己实现个factory然后注入到容器里,然后创建你自己需要的bean。比如说mybatis里的sqlSessionFactory?里面我没怎么细看。但应该是一种扩展第三方包功能的思路
抽象工厂,我本来想举个不同媒介的存储服务的例子,但我突然发现抽象工厂是一个很重的用法,因为抽象工厂更关注的是所创建的对象。但我们实际开发中突出的是服务的概念,也就是一种方法的实现,所以完全可以把对象中我们真正要用的方法抽成接口,然后用简单工厂就好了。