单例类(单例设计模式)[java]

设计模式:解决某一类问题的方案(模式)

单例类:只允许创建一个对象实例的类,称为单例类

单例模式:让一个类在一个程序中只能创建一个对象

eg:任务管理器(无论你点击多少次,都只能创建一个窗口)

实现流程:

1.私有化构造方法 (使用private关键字修饰成员变量)

2.声明本类类型的引用,指向本类类型的对象,被static和private共同修饰(由于构造方法被private关键字所修饰,所以在初始化时是在本类中声明,不同于通过测试类来调用构造方法初始化成员变量)

理解:被static修饰是为了将类变量从对象层级上升到类层级,也就是达到这个类中始终只有一个对象的目的,也就是不管你后续在测试类中通过调用共有的方法,都只有一个相同的空间存储对象的内容,只是创建了不同的栈内存的引用而已,但这些引用指向了相同的空间,也就是这些引用(对象)的地址全都相同,其实就是只有一个对象,只是起了不同的名字而已

3.提供共有的get方法,将成员变量也就是类对象的数值返回出去,也就是在外界只能通过get方法进行对象的创建,并且get方法通过static关键字修饰,就从对象层级上升到了类层级,在测试类中就可以通过类名来调用。

案例测试:

public class WindowDemo {
  //接收唯一的一个对象
  private static WindowDemo windowDemo = null;
  //将构造方法设置为私有权限,在其他类中不能随便使用
  private WindowDemo(){
​
  }
  //向外界提供方法,获取唯一的对象
  public static  WindowDemo getWindow(){
  //控制生成对象数量
  if(windowDemo==null){
       windowDemo = new WindowDemo();
  }
     return windowDemo;
  }
}
public class TestWindow {
   public static void main(String[] args) {
​
     //new WindowDemo();
     //new WindowDemo();
​
   WindowDemo windowDemo1 =  WindowDemo.getWindow();
   WindowDemo windowDemo2 =  WindowDemo.getWindow();
​
    System.out.println(windowDemo1);
    System.out.println(windowDemo2);
    }
}

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2hlbi53eA==,size_18,color_FFFFFF,t_70,g_se,x_16

地址相同,说明是同一个对象。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chen☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值