标签:style class blog code java http
简单来说就是针对特定问题的解决方案。
我们在设计数据库的时候有范式理论,还记得不?我不记得了,以后复习。范式理论是指导我们设计数据库的表,他是我们设计数据库的一个指导原则,他的目标是减少冗余。简单来说,作为一个java程序员,我们每天都在写各种各样的类,这些类之间不是孤立的,他们是是有联系的一个整体,不同的类之间协作构成了我们庞大的程序。因此如何设计这些类呢?设计模式就是一些指导我们设计这些类的原则。什么高内聚和低耦合,这块也得复习一下。
3、
该同学窃喜,因为它昨天刚看了单例模式。于是出现了如下对话?
M表示面官,Z表示张小二:问题会被加粗
package 单例模式;
class Singleton2 {
private static Singleton2 instance=new Singleton2();
private Singleton2()
{
System.out.println("对象创建了");
}
public static Singleton2 getInstance()
{
return instance;
}
}
public class Test6
{
public static void main(String args[])
{
Singleton2 s1=Singleton2.getInstance();
Singleton2 s2=Singleton2.getInstance();
}
}
运行两次 getInstace构造函数只调用一次。
1.类的静态变量只初始化一次
Z:是的,即使我们不调用getInstacne,对象也有可能会被创建。因此,我们无法做到按需创建。
例如:
Class.forName("单例模式.Singleton2");
同时调用其他静态方法
Z:张小二,提笔写到,
package 单例模式;
class Singleton2 {
private Singleton2()
{
System.out.println("对象创建了");
}
private static class Sigleton2Holder
{
private static Singleton2 instance=new Singleton2();
}
public static Singleton2 getInstance()
{
return Sigleton2Holder.instance ;
}
}
public class Test6
{
public static void main(String args[])
{
Singleton2 s1=Singleton2.getInstance();
Singleton2 s2=Singleton2.getInstance();
if(s1==s2)
{
System.out.println("对象时一样的");
}
else
{
System.out.println("对象时不一样的");
}
}
}
z:我使用一个静态内部类,专门用来获得对象,对于内部类,他的静态变量只出初始化一次,但是我保证了只有调用getinstace的时候进行初始化。
下篇单例模式,主要结合多线程讲解,博大精深啊
http://www.cnblogs.com/coffee/archive/2011/12/05/inside-java-singleton.html
标签:style class blog code java http
原文地址:http://www.cnblogs.com/hansongjiang/p/3807880.html