/*
如何保证对象的唯一性:1.不允许其他程序用new来创建该类对象。2.在该类创建一个本类实例。3.对外提供一个方法让其他程序可以获取该对象的引用。
*/
public class Test{public static void main(String[] args){//Subject sub = Subject.oSub;//这种方法不可控,一般不访问成员Subject sub = Subject.getInstance();//我们可以在方法中增加条件,根据条件是否返回对象的引用,增加程序的可控性!new Student().show(sub);new Teacher().show(sub);}
}class Subject{public  String sub;public static Subject oSub = new Subject();private Subject(){sub = "计算机科学与技术";}public static Subject getInstance(){//oSub = new Subject();//if(****) 增加 if 判断 可以 增加程序的可控性return oSub;}public String getSubject(){return sub;}public void setSubjcet(String name){sub = name;}
}/*静态成员变量和普通成员变量的显示初始化的不同之处:以下面的例子为例:静态变量的显示初始化编译之后不会放进 构造函数中!(想一想啊,如果放进了构造函数中,那不就是产生对象了吗?那可能吗?它是静态的,是属于类的!普通成员变量是属于对象的,所以显示初始化会放进构造函数中)所以不会使构造函数一直调用,最终栈溢出而普通成员变量的显示初始化编译之后回放进构造函数中, 这样就会导致构造函数一直被反复调用!class Subject{public  String sub;//public Subject ss = new Subject();public static Subject oSub = new Subject();//恶汉式//public static Subject oSub = null;//懒汉式private Subject(){//oSub = new Subject();//oSub是静态变量,加上这一句就会导致oSub显示初始化时栈溢出!sub = "计算机科学与技术";}public static Subject getSubject(){        return oSub;//return oSub = new Subject();}
}
*/class Student{public void show(Subject sub){System.out.println(sub.sub);}
}class Teacher{public void show(Subject sub){System.out.println(sub.sub);}
}

  

转载于:https://www.cnblogs.com/hujunzheng/p/3872833.html

如何保证对象的唯一性相关推荐

  1. 确保对象的唯一性——单例模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/7420883 3.1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例.举 ...

  2. Java 并发编程(四):如何保证对象的线程安全性

    本篇来谈谈 Java 并发编程:如何保证对象的线程安全性. 01.前言 先让我吐一句肺腑之言吧,不说出来会憋出内伤的.<Java 并发编程实战>这本书太特么枯燥了,尽管它被奉为并发编程当中 ...

  3. java 内部类 单例_确保对象的唯一性——单例模式 (四):一种更好的单例实现方法(静态内部类)...

    3.5 一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存:懒汉式单例类线程安全控制烦琐,而且性能受影响.可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有 ...

  4. 设计模式学习(三):确保对象的唯一性—单例模式

    一.简介 单例模式是用于创建那些在软件系统中独一无二的对象. 二.单例模式的意图 在实际开发过程中经常遇见这样的情况,为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功 ...

  5. HashpMap的原理,HashMap怎样保证key的唯一性

    HashMap 1.HashMap概述(原理) 2.HashMap的数据结构 3.HashMap的存取 4.扩展问题 前言 如下图我们知道HashMap元素是有序,Key值必须是唯一的,value可以 ...

  6. 逻辑删除记录时-保证业务的唯一性约束

    目录 业务背景 业务背景 通常业务系统的一些记录表都会有一些唯一性约束,例如相同用户下不允许重名:通常可以对指定列创建唯一性索引即可,例如: CREATE TABLE `novel` (`id` bi ...

  7. 在web开发中,如何保证对象只被创建一次之单例应用系列?

    单例就是该类只能返回一个实例. 单例所具备的特点: 1.私有化的构造函数 2.私有的静态的全局变量 3.公有的静态的方法 单例分为懒汉式.饿汉式和双层锁式 饿汉式: public class Sing ...

  8. DNS协议及域名解析过程(每个域名服务器都负责管理下一级域名服务器,保证域名的唯一性)

    DNS协议 我们之前已经了解过ARP协议. 如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址). 我们都知道,TCP/ ...

  9. 【怎样写代码】确保对象的唯一性 -- 单例模式(六):扩展案例

    如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, you can give me the greates ...

最新文章

  1. 如何自动播放光盘、解决win7电脑不能播放光盘
  2. android中关于点击屏幕,实现破碎的效果的实现
  3. STL容器的线程安全
  4. 如何用组策略来找到丢失的文件
  5. 机器学习中基本线性代数
  6. mysql5.7.17完全卸载_MySQL5.7完全卸载步骤详解
  7. GoldenGate常用命令(九)
  8. 微程序相关的两个知识点
  9. python名称空间_一篇文章搞懂Python的类与对象名称空间
  10. java利用xml生成excel_代码快速 实现xml 转换为 Excel(xml转excel通用类-java-完成代码可作工具使用).doc...
  11. Ps 2021教程,如何更换证件照背景?
  12. TP-LINK 路由器 无线桥接 设置
  13. C#练习题答案: 卡塔劳尔【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  14. Git error: unable to create file xxx: Filename too long
  15. 直播美颜SDK从技术层面如何自行实现
  16. Mini-CEX在神经内科住院医师临床能力培养中的应用
  17. flasgger手写phpwind接口文档
  18. @Autowired注解详解
  19. 聊聊最简单的名词:频率
  20. 自定义微信小程序底部导航栏

热门文章

  1. pythonplot绘图xrd_一种简化的截面动量组合测试[PythonMATLAB]
  2. python连等号_Python比较2列表和2元组用等号
  3. mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题
  4. PMP考试必看的答题技巧分享
  5. 工作流实战_09_flowable 流程实例挂起与激活
  6. flowable实战(十一)flowable 删除数据库表先后顺序
  7. 第三篇:服务消费者(Feign)(Finchley版本)V2.0_dev
  8. 软件设计师 - 系统测试
  9. HTTP中GET与POST方法有什么区别
  10. 自从有了mybatis-plus代码生成器,写代码效率高了一大截