ati turn 还需 sin 有用 只需要 对象 clas main
Java中的单例模式一般分为懒汉模式和饿汉模式,懒汉模式只有用得到的时候对象才初始化,饿汉模式无论用得到与否,都先初始化。
懒汉模式在运行的时候获取对象比较慢(因为类加载时并没有创建对象实例),但是加载类的时候比较快(因为此时不创建对象实例),饿汉模式是在运行的时候获取对象快(因为加载类时就创建了实例对象),加载类的时候慢(此时还需要创建实例对象)。
单例模式的应用场合,有些对象只需要一个的时候。
作用:保证整个应用程序中某个实例有且只有一个。
饿汉模式:
- class SingletonDemo {
- /**
- *单例饿汉模式
- */
- //在单例类的内部声明一个自己本身的对象,并且初始化
- private static SingletonDemo s = new SingletonDemo();
- //私有化构造器
- private SingletonDemo() {
- }
- //获得单例的对象,必须static,不然无法调用该方法
- public static SingletonDemo getSingletonDemo() {
- return s;
- }
- public void eat() {
- System.out.println("在吃饭");
- }
- }
- class TestSingletonDemo {
- public static void main(String[] args) {
- //使用类名调用get方法得到在单例类内部所创建的对象
- /**使用类名时要确保get方法是static类方法,才可以使用类名调用方法,
- *使用类名调用方法,那就要调用类属性,也要是static修饰的属性
- */
- SingletonDemo s1 = SingletonDemo.getSingletonDemo();
- s1.eat();
- System.out.println(s1);
- SingletonDemo s2 = SingletonDemo.getSingletonDemo();
- s2.eat();
- System.out.println(s2);
- SingletonDemo s3 = SingletonDemo.getSingletonDemo();
- s3.eat();
- System.out.println(s3);
- }
- }
单例懒汉模式:
- class Singleton{
- /**
- *懒汉模式
- */
- //将构造方法私有化,不允许外面直接创建对象
- private Singleton(){
- }
- //声明类的唯一对象,使用private static
- private static Singleton s;
- //给外部提供一个可以获得对象的方法,使用public static
- public static Singleton getSingleton(){
- if(s == null){
- s = new Singleton();
- }
- return s;
- }
- }
- class TestSingle{
- public static void main(String [] args){
- Singleton s = Singleton.getSingleton();
- System.out.println(s);
- Singleton s1 = Singleton.getSingleton();
- System.out.println(s1);
- Singleton s2 = Singleton.getSingleton();
- System.out.println(s2);
- }
- }
单例模式(懒汉,饿汉)
ati turn 还需 sin 有用 只需要 对象 clas main
原文:http://www.cnblogs.com/chenttc/p/7746179.html
来源: http://www.bubuko.com/infodetail-2369805.html