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

avatar 2017年4月24日23:51:03 评论 98 views

方法一、

对象唯一性一般能想到工厂模式,单例模式,我们这里介绍一下举例懒汉法。

单例模式详解

  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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: