您的位置:首页 > 职场人生

黑马程序员:设计模式

2012-06-04 08:23 176 查看
---------------------- android培训java培训、期待与您交流! ----------------------

        设计模式,在初学者看来,是个近乎神秘的东西。接触了之后,发现也不过如此。设计模式总结了我们在做程序设计时经常出现的问题和解决方案。通过视频的学习,了解了两种设计模式。

1、单例模式(singleton):某个类只有一个实例,这个类必须自己创建这个实例,并且向整个系统提供。特点是,类的构造方法时私有的,避免外部利用构造方法直接创建多个实例。其三种基本形式如下:

 

//Singleton类一进入内存就已经创建好了对象


public class Singleton

{   

   private static Singleton instance = new Singleton();  

   private Singleton()

   { }

   public static Singleton getInstance()

    {

        return instance;

    }

} 

 

//Singleton类进入类存对象还没创建,只有调用了getInstance()方法时才创建

public class Singleton

{

  private static Singleton instance = null;

  Singleton()

  { }

   public static synchronized Singleton getInstance()    //以线程同步的方式创建

  {

       if(instance == null)

       {   

                instance = new Singleton();   

       }  

    return instance;

   }

} 

 

 //综合了以上两种方式的优点

public class Singleton

{

  private static Singleton instance = null;

  Singleton()

  { }

   public static Singleton getInstance()

  {

        if(instance == null) //这个判断是提高效率,减少对synchronized的判断

       {

            synchronized(Singleton.class) //使用字节码对象锁,给以下代码块加锁

            if(instance == null)

            {   

                   instance = new Singleton();   

            }

       } 

      return instance; 

   }

} 

 

2、享元模式(flyweight):如果很多很小的对象,很多相似的属性,那么就可以把它编成一个对象,还有那些不同的东西把它编成外部的属性,作为方法的参数传入,称为外部状态;那些相同的属性称之为内部状态。特点是:当一个对象平凡用到,要把它封装到某个内存区域,实现共享访问,避免重复创建大量小对象,浪费资源。学习jdk1.5新特性时用到这种设计模式,例如课程中讲到的自动拆装箱过程细节问题:

    Integer i1 = 13;    /*数字若在一个字节内(-128~127)时,就自动将其

    Integer i2 = 13;      缓存,需要时直接从中取出*/

    System.out.println(i1 == i2); //输出true

    Integer i1 = 138;

    Integer i2 = 138;

    System.out.println(i1 == i2); //输出false

 

设计模式目前总共就23种,确实很了不起,以后还要在实践中继续探索!

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息