1:、经典懒汉:

代码如下:

 package org.pine.test;

 public class Person {
private String name;
private int age; public static Person person; private Person(){ } public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public static synchronized Person getInstance(){
if(person==null){
person = new Person();
}
return person;
}
}

测试类:

 package org.pine.test;

 public class PersonTest {

     public static void main(String[] args){
Person p0 = Person.getInstance();
p0.setName("张泰松");
p0.setAge(27);
System.out.println(p0); Person p1 = Person.getInstance();
System.out.println(p1); System.out.println(p0==p1);
} }

2、经典饿汉

代码如下:

 package org.pine.test;

 public class Animal {

     private int footCount;

     public static /*final*/ Animal animal = new Animal();

     private Animal () {

     }

     public int getFootCount() {
return footCount;
} public void setFootCount(int footCount) {
this.footCount = footCount;
} @Override
public String toString() {
return "Animal{" +
"footCount=" + footCount +
'}';
} public static Animal getInstance(){
return animal;
}
}

测试类:

 package org.pine.test;

 public class AnimalTest {
public static void main(String[] args){
Animal a0 = Animal.getInstance();
a0.setFootCount(4);
System.out.println(a0); Animal a1 = Animal.getInstance();
System.out.println(a1); System.out.println(a0==a1);
}
}

Java中单例实现的更多相关文章

  1. Java中单例

    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例.饿汉式单例 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...

  2. java中单例设计模式

    在java中创建单例的方式主要有三种:饿汉式.懒汉式.登记式.以下内容均是摘抄自 http://blog.csdn.net/jason0539/article/details/23297037/ 一. ...

  3. Java中单例设计模式,饿汉式和懒汉式

    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯 ...

  4. Java中单例设计模式总结

    两种单例常见的实现方式: 1:懒汉的设计模式,在第一次调用的时候才完成相关的初始化操作 懒汉式是典型的时间换空间,就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间.当然,如果一直没有人 ...

  5. java中单例类

    class Singleton {     private static Singleton instance;     private Singleton(){}     public static ...

  6. Java中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)

    /*** * 懒汉模式 1 * 可以延迟加载,但线程不安全. * @author admin * */ public class TestSinleton1 { private static Test ...

  7. java单例-积木系列

    一步步知识点归纳吧,把以前似懂非懂,了解表面,知道点不知道面的知识归一下档.   懒汉式单例: 私有化构造函数,阻止外界实例话对象,调用getInstance静态方法,判断是否已经实例化. 为什么是懒 ...

  8. swift 中单例的写法

    在swift中单例的写法和oc的有所不同,在书写的时候又分很多种写法,,如果一个.swift 文件只创建了一个类,可以用那种dispatch_once的写法,如果一个.swift文件中有很多类的存在, ...

  9. java单例的几种实现方法

    java单例的几种实现方法: 方式1: public class Something { private Something() {} private static class LazyHolder ...

随机推荐

  1. elasticSearch新认知

    之前已经学习使用过ElasticSearch的使用,今天补充巩固一下... 上一次的环境是在 linux下使用 EalsticSearch(安装教程详见:https://www.cnblogs.com ...

  2. MySQL 每秒 570000 的写入,如何实现?

    阅读本文大概需要 2.8 分钟. 来源:http://t.cn/E2TbCg5 一.需求 一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使 ...

  3. Django项目添加应用路径

    sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

  4. [Postman]Postman导航(3)

    Postman提供了一个多窗口和多标签界面,供您使用API​​. 此界面设计为您提供尽可能多的API空间. 侧边栏 邮差侧边栏可让您查找和管理请求和集合.侧边栏有两个主要选项卡:  历史记录  和   ...

  5. dubbo集群容错解决方案

    dubbo主要核心部件 Remoting:网络通信框架,实现了sync-over-async和request-response消息机制. RPC:一个远程过程调用的抽象,支持负载均衡.容灾和集群功能. ...

  6. python2程序移植python3的一些注意事项

    1 queue: python2: import Queue python3: import queue 2 queue size: python2: cache = Queue.Queue(maxs ...

  7. Docker安装配置MongoDB并使用Robo 3T在局域网连接

    主要参考了这位老兄的文章(传送门),写的还是比较详细的. 不废话直接来正经的. 1.docker pull mongo 从docker hub拉取最新的mongo镜像文件,300多M大小. 2.doc ...

  8. 小程序入口构造工具&二维码测试工具

    小程序入口构造工具&二维码测试工具 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&a ...

  9. cpuset

    本文属于内核文档翻译,翻译时没有遵照原文,添加了一些作者的理解,目的不是为了替代内核文档,可以作为阅读内核文档的引子,作者鼓励读者阅读原有的内核文档.原文参考3.10.514内核文档cpuset.tx ...

  10. 解决Database returned an invalid datetime value. Are time zone definitions for your database installed?

    设定博客文章按照时间分层筛选出现问题 ret=Article.objects.filter(user=user).annotate(month=TruncMonth("create_time ...