您的位置:首页 > 其它

面向对象6_常见的设计模式【单例模式】【模板模式】【组合设计模式】等

2013-11-28 18:19 369 查看



设计模式:对问题行之有效的解决方式。其实它是一种思想。

单例模式

保证一个类在内存中对象唯一性

必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

如何保证对象唯一性呢?

1,不允许其他程序用new创建该类对象。

2,在该类创建一个本类实例。

3,对外提供一个方法让其他程序可以获取该对象。

步骤:

1,私有化该类构造函数。 //工具类也有这一步

2,通过new在本类中创建一个本类对象。

3,定义一个公有的方法,将创建的对象返回。

饿汉式 //开发

private static Single s = new Single();//类一加载,对象就存在了
       private Single(){}
       public static Single getInstance()//可加上控制条件
       {
              return s;
}


懒汉式 //多线程安全隐患 //面试

private static Single2 s = null;//类加载进来没有对象
       private Single2(){}
       public static Single2 getInstance()//只有调用方法才会创建对象
       {
              if(s==null)
                     s = new Single2();
              return s;
       }




</pre><p></p><h2></h2><p><span style="font-size:18px;">抽象类的应用:</span></p><h1><span style="font-size:18px;">模板方法设计模式</span></h1><div><p>/* 是一种设计思想,将不确定的东西暴露出去,不一定是抽象方法</p><p>获取一段程序运行的时间</p><p>原理:获取程序开始和结束时间相减即可</p><p>获取时间:<span style="font-family: 'Times New Roman';">System.currentTimeMillis();</span></p><p> </p><p>模板方法设计模式</p><p>在定义功能时,功能的一部分是确定的,单有一部分是不确定的(抽象)</p><p>确定的部分在使用不确定的部分,将不确定的部分暴露出去,又该类的子类去完成</p><p>*/</p><p></p><pre code_snippet_id="81294" snippet_file_name="blog_20131128_3_3086082" name="code" class="java">abstract class GetTime
{
	public final void getTime()//确定的功能,使用final避免被覆盖
	{
		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<1000 ;x++ )
		{
			int sum=0;
			sum+=x;
			System.out.print(sum);
		}
	}
}

class TemplateDemo
{
	public static void main(String[] args)
	{
		SubTime gt=new SubTime();
		gt.getTime();
	}
}


待续...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: