zoukankan      html  css  js  c++  java
  • 找工作--设计模式

    单例模式:
    作用:就是保证在应用程序的整个生命周期中,单例类的实例最多只能有一个。
    好处:类只实例化一次,省资源,节省开销,提高速度

    主要考察的是多线程下面单例模式的线程安全性问题
    第一种:饿汉式,在类被加载时,静态变量m_instance会被初始化,此时类的私有构造子会被调用

    public class Singleton {
        private static Singleton sin=new Singleton();    ///直接初始化一个实例对象
        private Singleton(){    ///private类型的构造函数,保证其他类对象不能直接new一个该对象的实例
        }
        public static Singleton getSin(){    ///该类唯一的一个public方法    
            return sin;
        }
    }
    

      上述代码中的一个缺点是该类加载的时候就会直接new 一个静态对象出来,当系统中这样的类较多时,会使得启动速度变慢 。现在流行的设计都是讲“延迟加载”,我们可以在第一次使用的时候才初始化第一个该类对象。所以这种适合在小系统。

    第二种:懒汉式,在首次使用对象的时候才进行创建,在下面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境

    public class Singleton {  
         private static Singleton instance;  
         private Singleton (){
             
         }   
         public static synchronized Singleton getInstance(){    //对获取实例的方法进行同步
           if (instance == null)     
             instance = new Singleton(); 
           return instance;
         }
     }
    

     上述代码中的一次锁住了一个方法, 这个粒度有点大 ,改进就是只锁住其中的new语句就OK。就是所谓的“双重锁”机制。

     多线程安全单例模式实例三(使用双重同步锁)

    public class Singleton {  
         private static Singleton instance;  
         private Singleton (){
         }   
         public static Singleton getInstance(){    //对获取实例的方法进行同步
           if (instance == null){
               synchronized(Singleton.class){
                   if (instance == null)
                       instance = new Singleton(); 
               }
           }
           return instance;
         }
     }
    

      参考:http://www.cnblogs.com/xudong-bupt/p/3433643.html

    适配器模式:

    作用:将一个类的接口转化成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    参考:http://visionsky.blog.51cto.com/733317/384607/

  • 相关阅读:
    XSS 跨站脚本攻击之构造剖析(一)
    PHP 一个表单多个提交按钮,处理不同的业务逻辑
    Ajax 学习之动态获取,返回服务器的值
    Ajax 学习之获取服务器的值
    Ajax 学习之创建XMLHttpRequest对象------Ajax的核心
    H5开发之Eclipes 编码乱码问题
    PHP 表单提交多行数据,显示多个submit
    PHP 输出表格单元格的数据之用表单的方式;
    PHP 读取逐条数据库记录,以及提交下拉菜单选项
    mysql多个TimeStamp设置(转)
  • 原文地址:https://www.cnblogs.com/java-cjt/p/5203413.html
Copyright © 2011-2022 走看看