---------------------- 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