1.单例模式
单例模式就是保证一个类只有一个对象。
(1)饿汉——类定义的时候就实例化了。
用的时候取就行了
(2)懒汉——等到第一次用的时候才去实例化
用的时候 有就直接用 没有就创建。
2.工厂模式
工厂模式就是把类都放在一起。
通过工厂去使用类。有点像spring 。你需要使用什么类都可以通过工厂去创建。spring 优秀的地方在于你需要使用什么类spring都会给你。主动与被动的关系吧。
3.代理模式
(1)静态代理
代理类直接调用方法 ,可以再调用方法前后做一下操作。
(2)动态代理
将代理类与被代理的类解耦, 动态选择 代理类 与 被代理的类
(3)CGLIB代理
与动态代理类似 都是将代理类与被代理的类解耦
不过 JDK实现动态代理需要实现类通过接口定义业务方法
CGLIB代理是创建一个子类
CGLIB创建的动态代理对象比JDK创建的动态代理对象的性能更高,但是CGLIB创建代理对象时所花费的时间却比JDK多得多。所以对于单例的对象,因为无需频繁创建对象,用CGLIB合适,反之使用JDK方式要更为合适一些。同时由于CGLib由于是采用动态创建子类的方法,对于final修饰的方法无法进行代理
4.观察者模式
被观察者 维护一个观察者的列表。 发生动作是 告知列表中的每一个人。
直接看别人的代码就能看懂
5.装饰着模式
这个也比较简单了。 就是每个类都有一个 父类的对象(其他子类) ,执行方法是 先执行一下 自己成员的这个方法。有点递归的感觉。同样看代码吧。