• 找工作--设计模式


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

    主要考察的是多线程下面单例模式的线程安全性问题
    第一种:饿汉式,在类被加载时,静态变量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/

  • 相关阅读:
    CF 335A(Banana-贪心-priority_queue是大根堆)
    Oracle shutdown immediate无法关闭数据库解决方法
    ORA-02266: unique/primary keys in table referenced by enabled foreign keys
    Linux命令学习总结:date命令
    Linux命令学习总结:pwd命令
    Linux命令学习总结:cd命令
    ORACLE表空间管理维护
    ORACLE 12C新特性——CDB与PDB
    [翻译]当分发数据库增长到25G时如何解决
    The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'
  • 原文地址:https://www.cnblogs.com/java-cjt/p/5203413.html
Copyright © 2020-2023  润新知