24中设计模式(Java中的四种单例模式)

单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。

    设计模式:单例设计模式

        解决一个类中只允许存在一个对象这种情况;

        不允许通过类,无限制的创建该类的对象。

      怎样实现单例模式?

            构造函数私有化(private);

            在当前类的内部,写一个方法创建出该类的对象;

            对外提供公共的访问接口;

 

 

 

类:类可以被继承,但是只能单继承,可以扩展一下通过串联继承的方式实现类似的多继承,

    或者同过实现多接口的方式,实现继承中的多继承;

 

    这种实现方式有一定的局限性 或者 缺点?

 

可也使用内部类来完善这种关系:

    简单理解:就是在一个类的内部 又定义了一个类;

 

   通过内部类 来完善java中的单继承;

Eg:人类: 由各个部分组成,

     例如:心脏 (血液循环,跳动),心脏又在人体中,如同内部类在外部类中;

 

内部类需要掌握的知识点:

  1. 内部类的结构
  2. 内部类中变量的访问形式
  3. 静态内部类

 

  1. 私有内部类
  2. 方法内部类

 

 

总结:

使用内部类还能够为我们带来如下特性:

   1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。

  2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。

  3、创建内部类对象的时刻并不依赖于外围类对象的创建。

  4、内部类并没有赋值关联关系,他就是一个独立的实体。

   5、内部类提供了更好的封装,除了该外围类,其他类都不能访问

    6、内部类使得多重继承的解决方案变得更加完整。

        Eg: Sums 子类

public class Test_07 {
	public static void main(String[] args) {
		
	}

}

class SingleTon3{
	private SingleTon3(){
	}
	//定义一个私有内部类
	private static class Inner{
		//创建 外部类对象的方法
		private static SingleTon3 intace = new SingleTon3();
	}
	//写一个方法 提供 内部类的 属性值;
	public static SingleTon3 getInstance(){
		SingleTon3 singEomeEnt = Inner.intace;
		return singEomeEnt;
	}
}


 // 线程安全模式:
class SingleTon2{
	private static SingleTon2 instance;
	//私有化构造函数
	private SingleTon2(){
	}
	//写一个方法 提供 当前类对象:synchronized 程序锁
	public static synchronized SingleTon2 getInstance(){
		//判断当前对象是否 有效
		if (instance == null) {
			instance = new SingleTon2();
		}
		return instance;
	}
}

/**
 * 单例模式的实现方式:饿汉模式
 * 		提前进行实例化操作,没有延迟加载,不管是否 会使用都会 初始化一个 到内存中去
 * @author direct
 *
 */
class SingleTon{
	//构造 函数私有化
	private SingleTon(){
	}
	//创建对象 :不能被外部 直接创建的方法
	private static SingleTon getSingle(){
		return new SingleTon();
	}
	//提供一个公共的方法 返回该队形
	public static SingleTon showSing(){
		return getSingle();
	}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值