第七
①:spring
单例模式一般分为五种 懒汉,恶汉,双重校验锁,枚举和静态内部类
如果涉及到反序列化创建对象时使用枚举的方式来实现单例
特点:
1.单例类的构造方法是私有的
2.单例类负责创建自己唯一的实例,并提供外部访问
④:Prototype
在Java中,我们可以使用new关键字指定类名来生成类的实例,像这样使用new来生成实例时,是必须指定类名的。但是,在开发过程中,有时候也会有”在不指定类名的前提下生成实例的需求”,例如,在以下情况下我们就不能根据类来生成实例,而是根据现有的实例来生成新的实例。
(1)对象种类繁多,无法将它们整合到一个类中时
(2)难以根据类生成实例时
生成实例的过程太过复杂,很难根据类来 生成实例,通常,在想生成一个和之前用户通过操作所创建出来的实例完全一样的实例的时候,我们会事先将用户通过操作所创建出来的实例保存起来,然后在需要时通过复制来生成新的实例。
(3)想解耦框架与生成的实例时
想要让生成实例的框架不依赖于具体的类,这时,不能指定类名来生成实例,要事先”注册一个原型的“实例,然后通过复制该实例来生成新的实例。
在Java中可以使用clone创建出实例的副本。
根据实力原型、实力模型来生成新的实例的模型就是Prototype模型。
(https://blog.csdn.net/followwwind/article/details/78284713)
⑤:EL
特点:
- EL可以与JSTL结合使用,也可以与JavaScript语句结合使用;
- EL中会自动进行类型转换。如果想通过EL输入两个字符串型数值的和,可以直接通过”+”号进行连接,如${num1+num2};
- EL不仅可以访问一般变量,还可以访问JavaBean中的属性以及嵌套属性和集合对象;
- 在EL中可以获得命名空间(PageContext对象,它是页面中所有其他内置对象的最大范围的集成对象,通过它可以访问其他内置对象);
- 在使用EL进行除法运算时,如果除数为0,则返回无穷大Infinity,而不是错误;
- 在EL中可以访问JSP的作用域(request、session、application以及page);
- 扩展函数可以与Java类的静态方法进行映射。(https://www.cnblogs.com/w-wfy/p/6414117.html)
⑥:Decorator 装饰模式:
装饰器模式又名包装(Wrapper)模式。装饰器模式以对客户端透明的方式拓展对象的功能,是继承关系的一种替代方案。
装饰器模式的类图如下:

在装饰器模式中的角色有:
- 抽象构件(Component)角色:给出一个抽象接口,已规范准备接收附加责任的对象。
- 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类
- 装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。
- 具体装饰(ConcreteDecorator)角色:负责给构件对象“贴上”附加的责任。————(https://www.jianshu.com/p/d80b6b4b76fc)
⑦:Interceptor
(https://www.cnblogs.com/austinspark-jessylu/p/7453302.html)
⑧:Producer
生产者-消费者模型是多线程问题里面的经典问题,也是面试的常见问题。有如下几个常见的实现方法:
1. wait()/notify()
2. lock & condition
3. BlockingQueue ————(https://www.cnblogs.com/techyc/p/3357194.html)