spring 工厂模式解耦的升级版(多例转单例)
我们在表现层敲一个循环,打印一下用beanfactory生产的对象
我们可以看见,此时的对象是多例,多例就是有多个对象实例
我们在AccountServiceImpl中加一个成员变量,并做一点操作
然后我们在表现层调用as对象的保存账户方法,可以看到每个对象都是独立的,i的值没有累加
我们看beanfactory,因为使用了newInstance方法,因此每次都会调用对象的默认构造方法
于是我们需要对factory进行改造,使生产的对象变成单例,我们需要做到每次只newInstance一次,如果不存起来,jvm的垃圾回收机制会清理掉。
我们定义一个map容器,用于存放我们的bean对象
然后我们在静态代码块里,我们初始化每个bean
然后我们可以改造getBean方法
然后我们运行一下,可以看到执行的是同一个对象
一点一点积累,一点一点蜕变!