------- android培训、java培训、期待与您交流! ----------
以下仅为个人平时学习笔记,可能有有错误的地方,希望有看到者提出来,共同讨论,谢谢!
1.设计模式:解决某一类问题最行之有效的方法。
2.java中常见有23种设计模式:抽象工厂模式、适配器模式、桥梁模式、建造模式、责任链模式、
命令模式、合成模式、门面模式、工厂方法、享元模式、解释器模式、迭代模式、调停者模式、
备忘录模式、观察者模式、原始模型模式、装饰模式、策略模式、代理模式、单例模式、状态模式、
模板模式、访问者模式。
3.单例设计模式:解决一个类在内存中只存在一个对象。
4.想要保证对象唯一:
a.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象.
b.还为了让其他程序可以访问该类对象,只好在本类中自定义一个对象.
c.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式.
5.实现对象唯一的代码体现:
a.将构造函数私有化.
b.在类中创建一个本类对象.
c.提供一个方法可以获取到该对象.
6.什么时候用单例设计模式:
a.对于事物该怎么描述还是怎么描述.
b.当需要将该事物的对象保证在内存中唯一时,就使用单例设计模式.
****************************单例设计模式代码示例**************************
1.饿汉式。
这个是先初始化对象。类一加载进内存就建立了Single的对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
2.懒汉式。
对象是getInstance()方法被调用时,才初始化建立对象,也叫做对象的延时加载。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
s=new Single();
}
return s;
}
}
**注意:
1. 开发一般用饿汉式,因为安全、简单。(建议使用)
2.而懒汉式当多人同时调用getInstance()方法时候,就会出现问题(生成对象不唯一)。此时为了避免此种问题getInstance()方法
要定义为public static synchronized Single getInstance()。但是如此的话就会降低程序的执行效率。
还有一种解决办法就是采用双重判断:(这样要比饿汉式多判断一次,代码也要稍微复杂一些)
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class);
if(s==null)
{
s=new Single();
}
}
return s;
}