单例模式
来源:互联网 发布:windows iso怎么下载 编辑:程序博客网 时间:2024/06/07 06:06
package com.demo;
public class Demo01 {
public static void main(String[] args) {
/*
* java设计模式:在处理某些情况下一种约定俗成,并且行之有效的方法
* 23种设计模式 单例设计模式 装饰者设计模式
*
* 单例设计模式:主要是为了解决在计算机内存中某个类只存在一个对象的这种情况
*/
//Single s1 = new Single();
Single2 s1 = Single2.getInstances();
s1.setAge(20);
// Single s2 = new Single();
Single2 s2 = Single2.getInstances();
s2.setAge(20);
if(s1==s2){
System.out.println("是同一个对象");
}else{
System.out.println("不是同一个对象");
}
}
}
//饿汉式单例模式
class Single {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//1.将构造函数设为私有化 避免在外部调用实例化对象
private Single(int age) {
super();
}
public Single() {
// TODO Auto-generated constructor stub
}
//2.在本类里面提供一个对象
private static Single s = new Single();
//3.对外提供公共的方法
public static Single getInstances(){
return s;
}
}
//懒汉式单例模式
class Single2{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//1.将构造函数设为私有化 避免在外部调用实例化对象
private Single2(int age) {
super();
}
public Single2() {
// TODO Auto-generated constructor stub
}
//2在本类中提供一个对象
private static Single2 s =null;
//3.对外提供公共的方法 synchronized线程锁
public synchronized static Single2 getInstances(){
if(s == null){
s= new Single2();
}
return s;
}
}
public class Demo01 {
public static void main(String[] args) {
/*
* java设计模式:在处理某些情况下一种约定俗成,并且行之有效的方法
* 23种设计模式 单例设计模式 装饰者设计模式
*
* 单例设计模式:主要是为了解决在计算机内存中某个类只存在一个对象的这种情况
*/
//Single s1 = new Single();
Single2 s1 = Single2.getInstances();
s1.setAge(20);
// Single s2 = new Single();
Single2 s2 = Single2.getInstances();
s2.setAge(20);
if(s1==s2){
System.out.println("是同一个对象");
}else{
System.out.println("不是同一个对象");
}
}
}
//饿汉式单例模式
class Single {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//1.将构造函数设为私有化 避免在外部调用实例化对象
private Single(int age) {
super();
}
public Single() {
// TODO Auto-generated constructor stub
}
//2.在本类里面提供一个对象
private static Single s = new Single();
//3.对外提供公共的方法
public static Single getInstances(){
return s;
}
}
//懒汉式单例模式
class Single2{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//1.将构造函数设为私有化 避免在外部调用实例化对象
private Single2(int age) {
super();
}
public Single2() {
// TODO Auto-generated constructor stub
}
//2在本类中提供一个对象
private static Single2 s =null;
//3.对外提供公共的方法 synchronized线程锁
public synchronized static Single2 getInstances(){
if(s == null){
s= new Single2();
}
return s;
}
}
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Error response from daemon: Cannot start container System error: exec: "/bin/bash": stat /bin/bash:
- Frame间最小间隙
- eclipse打开文件位置插件
- 初始化顺序
- 面试题(数据访问)
- 单例模式
- MAC地址
- mybatis association的两种形式
- wampserver下如何修改MySQL密码
- Ubuntu 16.04 几个国内更新源
- Python 使用setuptools打包安装
- QT系列:JSON操作
- synchronized 与 Lock 的那点事
- grid列自动换行