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



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

单例模式

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

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

如何保证对象唯一性呢?

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();
	}
}

待续...








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值