设计模式就是让代码写的规范,什么是规范呢,就是松耦合,高复用,易维护,易拓展,虽然现在很少在平时的代码中考虑这些,不过设计模式并不是一种强制,就如本书作者所说如果发现一种更为简单的方式,就没必要生搬硬套的使用设计模式,设计模式的初衷是让程序猿从复杂的工作中解脱,而不是进入另一个怪圈。
策略模式
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean,这两种Bean都被容器管理,但工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该FactoryBean的getObject方法所返回的对象。
FactoryBean接口有3个方法:
Object getObject():返回本工厂创建的对象实例。此实例也许是共享的,依赖于该工厂返回的是单例或者是原型。
boolean isSingleton():如果FactoryBean返回的是单例,该方法返回值为true,否则为false
Class getObjectType():返回对象类型。对象类型是getObject()方法返回的对象的类型,如果不知道的类型则返回null。
FactoryBean概念和接口在Spring框架中大量使用。Spring内置的有超过50个实现。
线程独享
程序计数器是一块内存较小的存储空间,可以看做当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器值来选取下一条需要执行的字节码指令,线程执行的是Java方法的话,这个计数器记录的就是正在执行的字节码指令地址,如果时native方法,那么记录的就是空,该区域没有规定内存错误。线程独享
生命周期和线程相同,每个方法创建时都会创建一个栈帧,用于存储局部变量表(存储了基本数据类型和对象引用类型)、操作数栈、动态链接、方法出口信息。栈帧在栈中的入栈出栈就是对应方法调用到执行的过程。线程独享
这个和虚拟机栈一样功能,只不过虚拟机栈是为Java方法服务,这个是为本地方法服务的,即为native方法服务。线程共享
这个方法是JVM管理的主要区域,也称为GC堆,主要存储的时对象实例和数组。