Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别
2018-01-01 00:39
946 查看
Java的单例模式——饿汉式
Demo类调用
Java的单例模式——懒汉式
Demo类调用
package com.swift; //Java单例设计模式——恶汉式 public class SinglePerson { private String name="The God"; private int age=10000; private static SinglePerson person=new SinglePerson();//生成对象放在java静态池中,否则如果非静态在堆中,生命周期比类短 private SinglePerson() {};//构造方法私有化可以避免大量实例化对象而消耗内存 public static SinglePerson getSinglePerson() {//静态方法类外部可以通过类名.获取 return person; } @Override public String toString() { return "SinglePerson [name=" + name + ", age=" + age + "]"; } }
Demo类调用
package com.swift; public class DemoSinglePerson { public static void main(String[] args) { SinglePerson s=SinglePerson.getSinglePerson(); System.out.println(s.toString());//得到唯一的对象 } }
Java的单例模式——懒汉式
package com.swift; //单例模式——懒汉模式 public class SinglePerson$Lazy { private String name = "The God"; private int age = 10000; private static SinglePerson$Lazy person = null;// 懒汉是不会这么急的,他要等调用get方法时才生成对象,就位了节省这一个对象的空间 private SinglePerson$Lazy() { };// 如果大量使用对象实例化操作来调用对象那么消耗内存会不断增大 public static SinglePerson$Lazy getSinglePerson() { synchronized (SinglePerson$Lazy.class) {//静态方法使用的同步锁用——类名.class if (person == null) {// 这样的写法在线程中会造成异常,多个线程同时执行创建对象,所以外边加锁,一次只能一个线程进来 person = new SinglePerson$Lazy(); return person; } else { return person; } } } @Override public String toString() { return "SinglePerson [name=" + name + ", age=" + age + "]"; } }
Demo类调用
package com.swift; public class DemoSingglePerson$Lazy { public static void main(String[] args) { SinglePerson$Lazy s=SinglePerson$Lazy.getSinglePerson(); System.out.println(s.toString()); } }
相关文章推荐
- Java构造方法私有化-->单例模式-->Runtime类的设计
- JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类
- java面向对象(十三) 构造方法私有化(单例与多例设计模式)
- JAVA面向对象知识点总结(4)— 单例设计模式:饿汉式、懒汉式
- java二十三种设计模式----(二)单例设计模式 :“懒汉式”与“饿汉式”的区别 为什么通常使用饿汉式
- JAVA单例设计模式(饿汉式和懒汉式的区别)
- java语言基础(53)——String 字面值对象和构造方法创建对象的区别
- 1105 Java中String字面值对象和构造方法创建对象的区别
- java设计模式-创建模式之 简单工厂,工厂方法和抽象工厂的区别总结
- java面试题:String字面值对象和构造方法创建对象的区别
- Java模式设计之单例模式, 接上篇【饿汉式,懒汉式】
- Java 设计模式中,简单工厂、工厂方法、抽象工厂的区别
- 单例设计模式(懒汉式和饿汉式区别)
- Java单例设计模式(饿汉式和懒汉式)
- 面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .
- java 单例设计模式之:懒汉式、饿汉式
- 构造方法私有化(单态设计模式)
- JAVA基础——单例设计模式(饿汉式与懒汉式)
- java单例设计模式 饿汉式 懒汉式
- Java设计模式中的单例模式的懒汉式和饿汉式