Java中如何使某个类的对象唯一性,只能创建一个对象

avatar 2017年04月24日23:51:03 1 3057 views
博主分享免费Java教学视频,B站账号:Java刘哥

方法一、

对象唯一性一般能想到工厂模式,单例模式,我们这里介绍一下举例懒汉法。 单例模式详解
  1. package com.liuyanzhao;
  2. class Student {
  3.     private String name;
  4.     public void setName(String name) {
  5.         this.name = name;
  6.     }
  7.     public String getName() {
  8.         return name;
  9.     }
  10.     private Student() {
  11.     }
  12.     private static Student s = new Student();
  13.     public static Student getInstance() {
  14.         return s;
  15.     }
  16. }
  17. public class Test {
  18.     public static void main(String[] args) {
  19.         Student s1 = Student.getInstance();
  20.         Student s2 = Student.getInstance();
  21.         s1.setName("Tom");
  22.         s2.setName("Jerry");
  23.         System.out.println(s1.getName());//Jerry
  24.         System.out.println(s2.getName());//Jerry
  25.     }
  26. }
新建的两个对象s1,s2其实是一个对象  

方法二、

通过计数器统计来创建对象
  1. package com.liuyanzhao;
  2. class Teacher {
  3.     static int i=0;
  4.     private String name;
  5.     public void setName(String name) {
  6.         this.name = name;
  7.     }
  8.     public String getName() {
  9.         return name;
  10.     }
  11.     private Teacher() {
  12.     }
  13.     public static Teacher newTeacher() {
  14.         Teacher.i++;
  15.         if(Teacher.i>1){
  16.             return null;
  17.         }
  18.         return new Teacher();
  19.     }
  20. }
  21. public class Test1 {
  22.     public static void main(String[] args) {
  23.         Teacher t = Teacher.newTeacher();
  24.         Teacher t1 = Teacher.newTeacher();
  25.         t.setName("Tom");
  26.         //t1.setName("Jerry");
  27.         System.out.println(t.getName());
  28.         //System.out.println(t1.getName());
  29.     }
  30. }
如上 只能创建一个对象,否则会报错。     本文地址:http://liuyanzhao.com/3328.html 转载请注明    
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0