20200318java学习之路之设计模式

一:设计模式

  1. java设计模式有23种
  2. 设计模式是一种思想,是解决问题行之有效的方式

二:单例设计模型

  1. 解决问题
    -保证一个类中的对象的唯一性
    -对于多个程序使用同一个配置信息对象时,就必须保证对象的唯一性

  2. 如何保证唯一性?
    -不允许其他程序使用new创建该类对象
    -在该类中创建一个本类实例
    -对外提供一个方法可以让其他程序去获取该类对象

  3. 步骤
    -私有化该类构造函数
    -通过new在本类中创建一个本类对象
    -定义一个公有方法,将创建对象返回

三:单例设计模式例题

/**
 *author
 

 */

class Single{
	private static Single s=new Single();
	private Single(){}
	public static Single getInstance(){
		return  s;
	}
}

class SingleDemo{
	public static void main(String [] args){
		Single s1 =Single.getInstance();
		Single s2 =Single.getInstance();
		System.out.println(s1==s2);

		//Single ss =Single.s;
		
		Test t1=new Test();
		Test t2=new Test();
		t1.setNum(10);
		t2.setNum(20);
		System.out.println(t1.getNum());
		System.out.println(t2.getNum());
	}
}

class Test {
	private int num;


	public void setNum(int num){
		this.num=num;
	}
	public int getNum(){
		return num;
	}

}

在这里插入图片描述

class Single{
	private static Single s=new Single();
	private Single(){}
	public static Single getInstance(){
		return  s;
	}
}

class SingleDemo2{
	public static void main(String [] args){
		Single s1 =Single.getInstance();
		Single s2 =Single.getInstance();
		System.out.println(s1==s2);

		//Single ss =Single.s;
		
		//Test t1=new Test();
		//Test t2=new Test();
		Test t1=Test.getInstance();
		Test t2=Test.getInstance();
		t1.setNum(10);
		t2.setNum(20);
		System.out.println(t1.getNum());
		System.out.println(t2.getNum());
	}
}

class Test {
	private int num;

private static Test t=new Test();
private Test(){}
private static Test getInstance(){
	return t;
}
	public void setNum(int num){
		this.num=num;
	}
	public int getNum(){
		return num;
	}

}
  1. 第一种代码输出值都会输出

  2. 第二种代码增加了下面代码,就会更新新的值覆盖前面的值
    private static Test t=new Test();
    private Test(){}
    private static Test getInstance(){
    return t;
    }

四:饿汉式 与 懒汉式

  1. 饿汉式
    class Single{
    private static Single s=new Single();
    private Single(){}
    public static Single getInstance(){
    return s;
    }
    }

  2. 懒汉式
    class Single2{
    //类加载进来,没有对象,只调用getInstance方法时,才会创建对象
    //延迟加载形式
    private satatic Ssingle2 s=null;
    private Single2(){
    public static Single2 getInstance(){
    if(s==null)
    s=new Single2();
    return s;
    }
    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值