java设计模式:
单例模式: 分为懒汉式和饿汉式
懒汉式:刚开始不会创建bean 在需要的时候才会创建,此时存在线程安全问题(线程不安全)
饿汉式:项目初始化自动创建好bean,后续不需要在次创建,此时不存在线程安全问题,但是浪费内存资源
之后优化两种单例模式的弊端
双检索模式:项目初始化如果已经存在bean实例,则以后不会再创建实例,如果不存在,在使用实例bean的时候加上同步锁创建实例此时也保证了线程安全
工厂模式:
工厂模式:每个工厂类只需要提供一个创建对象的接口,让子类决定去实例化哪一个类。 工厂方法使一个类的实例化延迟到子类
抽象工厂模式:为一组相关的对象提供一个抽象的接口,只需继承这个抽象类
代理模式:为其他对象提供一种代理来控制这个对象的行为
普通代理:调用者只需要知道代理的角色,不需要知道代理的真实对象,只要真实代理存在所调用的方法,真实的对象改变并不会影响调用
增强代理:调用者是要从真实的角色来查找代理的角色,不允许直接访问真实角色。 高层只需要getproxy就可以找到真实角色的所有方法,他根本不需要产生一个代理出来,代理的管理又真实角色自己完成。
动态代理:根据被代理的接口生成所有的方法并宣称自己实现了该接口所有的方法,首要条件被代理的类必须实现一个接口。