-------
android培训
、
java培训
、期待与您交流! ----------
java中有23种设计模式,现在我们谈谈单例设计模式和模板方法设计模式
1.单例设计模式:解决一个类在内存只存在一个对象。
要想保证对象唯一:
(1)为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。
(2)为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
(3)为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步怎么用代码体现呢?
(1)将构造函数私有化。
(2)在类中创建一个本类对象。
(3)提供一个方法可以获取到该对象。
对于事物该怎么描述还怎么描述。当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。单例设计模式分为饿汉式和懒汉式。
饿汉式:这个是先初始化对象,类一进内存就已经创建好了对象。
classSingle
{
private static Single s = new Single(); //创建本类对象
private Single(){} //私有化构造函数
public static Single getInstance() //建立外部访问对象的方法
{
return s;
}
}
懒汉式:对象是方法被调用时,才初始化,也叫做对象的延时加载。类进内存,对象还没有存在,只有调用了某一方法时才建立对象。
classSingle
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s= new Single();
}
}
return s;
}
}
2.模板方法设计模式:在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去。由该类的子类去完成。
abstract class GetTime//创建抽象类
{
public final void getTime() //建立获取时间方法并将其最终化以防子类对其复写修改
{
longstart = System.currentTimeMillis();
runcode();
longend = System.currentTimeMillis();
System.out.println("毫秒:"+(end-start));
}
public abstract void runcode(); //建立抽象方法
}
class SubTime extends GetTime //创建子类
{
public void runcode() //复写父类runcode()方法
{
for(int x=0; x<4000; x++)
{
System.out.print(x);
}
}
}
class TemplateDemo //创建新类以执行以上程序,相当于客户端
{
public static void main(String[] args)
{
//GetTimegt = new GetTime();
SubTimegt = new SubTime();
gt.getTime();
}
设计模式:解决某一类问题最行之有效的方法。
java中有23种设计模式,现在我们谈谈单例设计模式和模板方法设计模式
1.单例设计模式:解决一个类在内存只存在一个对象。
要想保证对象唯一:
(1)为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。
(2)为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
(3)为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步怎么用代码体现呢?
(1)将构造函数私有化。
(2)在类中创建一个本类对象。
(3)提供一个方法可以获取到该对象。
对于事物该怎么描述还怎么描述。当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。单例设计模式分为饿汉式和懒汉式。
饿汉式:这个是先初始化对象,类一进内存就已经创建好了对象。
classSingle
{
private static Single s = new Single(); //创建本类对象
private Single(){} //私有化构造函数
public static Single getInstance() //建立外部访问对象的方法
{
return s;
}
}
懒汉式:对象是方法被调用时,才初始化,也叫做对象的延时加载。类进内存,对象还没有存在,只有调用了某一方法时才建立对象。
classSingle
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s= new Single();
}
}
return s;
}
}
2.模板方法设计模式:在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去。由该类的子类去完成。
abstract class GetTime//创建抽象类
{
public final void getTime() //建立获取时间方法并将其最终化以防子类对其复写修改
{
longstart = System.currentTimeMillis();
runcode();
longend = System.currentTimeMillis();
System.out.println("毫秒:"+(end-start));
}
public abstract void runcode(); //建立抽象方法
}
class SubTime extends GetTime //创建子类
{
public void runcode() //复写父类runcode()方法
{
for(int x=0; x<4000; x++)
{
System.out.print(x);
}
}
}
class TemplateDemo //创建新类以执行以上程序,相当于客户端
{
public static void main(String[] args)
{
//GetTimegt = new GetTime();
SubTimegt = new SubTime();
gt.getTime();
}
}