day06-2设计模式-单例模式,模板方式

来源:互联网 发布:阿里云短信服务java 编辑:程序博客网 时间:2024/05/27 00:34
/*
设计模式:解决某一类问题行之有效的方法·
java中23中设计模式
单例设计模式:解决一个类在内存只存在一个对象

想要保证对象唯一
1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2.为了让其他程序可以访问该类对象,只好在本类中自定义一个对象
3.为了方便其他程序自定义对象的访问,可以对外提供一些访问方式

代码体现
1.将构造函数私有化
2.在类中建立一个本类对象
3.提供一个方法可以获取到该对象

对于事物该怎么描述还怎么描述
当需要将事物的对象保证在内存中唯一时,就将以上三步加上即可

*/

/*
这是先初始化对象
称为:饿汉式
single类一进内存就已经建好对象

class single
{
private static single s=new single();
private single(){}
public static single getInstance()
{
return s;
}
}
*/

//对象时方法被调用时,才初始化,也叫做对象的延时加载,成为懒汉式
//single一进内存,对象还没建立,只有调用getInstance方法,才建立对象
class single
{
private static single s=null;
private single(){}
public static  single getInstance()//技术锁机制synchronized:只能进入一个
{
if (s==null)
{
synchronized(single.class)
{
if (s==null)
{
s=new single();
}
}

return s;
}
}
}

//记录原则:定义单例,建议使用饿汉式
class 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}

------------------------------------------------

/*
需求:获取一段程序运行的时间
原理:获取程序开始和结束的时间

获取时间:System.currentTimeMillis();

当代码完成优化后,就可以解决该类问题

这种方法,模板方式设计模式

什么时模版方式?

在定义功能时,功能的一部分时确定的,但是有一部分不确定,而确定的部分在使用不确定的部分
那么这时就将不确定的部分暴漏出去,由该类的子类实现
*/
abstract class GetTime
{
public final void getTime()//避免被复写
{
long start=System.currentTimeMillis();

runcode();

long end=System.currentTimeMillis();


System.out.println("毫秒;"+(end-start));
}
public abstract void runcode();//里面时抽象的

}
class SubTime extends GetTime
{
public void runcode()
{
for (int x=0;x<4000 ; x++)
{
System.out.print(x);
}
}
}
class  TemplateDemo
{
public static void main(String[] args) 
{
//GetTime gt=new GetTime();
SubTime gt=new SubTime();
gt.getTime();
}
}

0 0
原创粉丝点击