zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python读取文件的方法
    python中global 和 nonlocal 的作用域
    android环境安装及配置
    python学习——sys.argv
    python学习——urlparse模块
    android:cmd下面用adb打log
    获取系统的换行符
    python----字符串方法
    类的继承---多重继承(两个父类有相同方法名和参数)
    Djngo 请求的生命周期
  • 原文地址:https://www.cnblogs.com/qwop/p/6637313.html
Copyright © 2011-2022 走看看