黑马程序员:设计模式
2012-06-04 08:23
176 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
设计模式,在初学者看来,是个近乎神秘的东西。接触了之后,发现也不过如此。设计模式总结了我们在做程序设计时经常出现的问题和解决方案。通过视频的学习,了解了两种设计模式。
1、单例模式(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
设计模式,在初学者看来,是个近乎神秘的东西。接触了之后,发现也不过如此。设计模式总结了我们在做程序设计时经常出现的问题和解决方案。通过视频的学习,了解了两种设计模式。
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
相关文章推荐
- 黑马程序员—java基础学习--单例设计模式
- 黑马程序员--单例设计模式
- 黑马程序员---单例设计模式
- 黑马程序员-JAVA学习之装饰设计模式与自定义BufferedReader
- 黑马程序员——装饰类设计模式简介
- 黑马程序员-Java_单例设计模式(Singleton Pattern)
- 黑马程序员_82_装饰设计模式
- 黑马程序员 Java设计模式总结
- 黑马程序员————java设计模式之单例模式一
- 黑马程序员_单例设计模式
- 黑马程序员——Java基础——数组工具类、设计模式和继承(一)
- 黑马程序员 _ Java基础 _ 之单例设计模式
- 黑马程序员_JAVA设计模式之单例模式
- 黑马程序员 单例设计模式
- 黑马程序员——JAVA基础之简述设计模式
- 【黑马程序员】多线程,设计模式——Java复习笔记
- 黑马程序员_ java高新之自动装箱与拆箱(引入设计模式:享元模式)
- 黑马程序员——单例设计模式
- 黑马程序员7--单例设计模式
- 黑马程序员--单例设计模式、抽象、继承