Java模式的秘密--java常用的几种模式

要学习设计模式,首先要明白设计模式,就是为实现某一种或某一组功能提供的代码编码方式.它没有固定的套路,只有约定俗成的风格.所有编码者可以根据已有的设计模式开放思维,设计出自己的设计模式,也会在无意中使用某些设计模式.

接下来我们举几个常用的模式例子

一..>单例模式

1.作用
  -保证整个应用中某个实例有且只有一个
2.应用场合
  -某些对象只需在应用在创建一个
3.饿汉模式 -- 加载类时的速度比较慢,运行时调用类的速度比较快,所属线程安全
  -所属类加载时,不论其实例是否调用,都会被加载
   //1.私有化默认构造方法
private Singleton(){}

//2.创建类的唯一实例
private static Singleton instance = new Singleton();

3.//提供一个获取实例的方法,并将此方法转换为类方法
return instance;
}
调用
Singleton s1 = Singleton.getInstance();

4.懒汉模式 -- 加载类时的速度比较快,运行时调用线程的速度比较慢,线程不安全
  在提供给外部的构造方法中进行实例化

二..>代理模式 -->Spring的核心设计思想

1.概念
  以其他模式提供一种代理以控制对这个对象的访问
  去掉了某些功能或增加了某些服务
2.模式
  远程代理 -- 客户端--服务器
  虚拟代理 -- 将一个需要资源很大的对象延时访问,真正需要的时候才创建
  保护代理 -- 权限控制
  智能引用代理 --
     ---静态代理:代理和被代理对象在代理之前是确定的.他们都实现相同的接口或者继承相同的抽象类
     ----继承:功能的叠加会使代理类无限叠加(不推荐)
     ----聚合:增加功能的先后循序只需调整调用顺序
   ---动态代理:代理类和被代理对象之间加入代理处理类
    ----JDK动态代理:只能代理实现了接口的类
    ----CGLib动态代理:对指定目标类产生一个子类,通过方法拦截所有父类方法的调用
    
3.动态代理实现思路:通过Proxy的newProxyInstance返回代理对象
  -声明一段源码(动态产生代理)
  -编译源码(JDK Compiler API) 产生新的类(代理类)
  -将这个类load到内存中,产生一个新的对象(代理对象)
  -return 代理对象
 
4.应用场景
  --当调用某个jar中的方法,我们不方便修改其源码时,就可以用代理在方法前后加入某些代码 -- AOP

原文地址:https://www.cnblogs.com/qwop/p/6637313.html