zoukankan      html  css  js  c++  java
  • 【设计模式】单例模式-Singleton

    【设计模式】单例模式-Singleton
    Ensure a class has only one instance, and provide a global point to access of it.
    确保一个类只有一个实例,并提供一个全局点来访问它。
    一个类有且仅有一个实例,并且自行实例化向整个系统提供。
    单例模式是一种常用的软件设计模式。它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
    如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
    单例模式满足三个条件:
    1.某个类只能有一个实例。
    2.类必须自行创建这个类的实例
    3.类必须自行向整个系统提供这个实例。
    实现方式通过使用private构造函数来确保类不能通过new关键字定义对象,然后自行实现对象返回方法。
    我们以总统为例,一个国家只能有一个正总统,代码如下:

    // 单例-总统
    package com.ycx.pattern.singleton;
    public class President {
        // 直接产生对象可以很好的解决并发访问问题
        private static final President president = new President();
        // 私有构造函数
        private President() {};
        public static President getInstance() { 
            return president;
        }
        public void sayHi() {
            System.out.println("Hi 大家好!我是总统."); 
        }
    }
    // 客户端
    package com.ycx.pattern.singleton;
    public class Client {
        public static void main(String[] args) {
            President president1 = President.getInstance();
            president1.sayHi();
            President president2 = President.getInstance();
            president2.sayHi();
            System.out.println("判断两个对象是否相同:"  + (president1 == president2) );
        }
    }

    运行结果:
    Hi 大家好!我是总统.
    Hi 大家好!我是总统.
    判断两个对象是否相同:true

    JDK中使用单例模式的例子

    public class Runtime {
        private static Runtime currentRuntime = new Runtime();
        public static Runtime getRuntime() {
            return currentRuntime;
        }
        /** Don't let anyone else instantiate this class */
        private Runtime() {}
    }
  • 相关阅读:
    框架集。样式表
    2017.11.23知识点整理
    HTML5的标签
    HTML5大体概括截图
    2017.11.21 通用标签及属性
    2017.11.21 课程随记
    JavaScript数组
    JavaScript语句
    javascript基础知识
    不用alert提示的非空表单验证
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/7685124.html
Copyright © 2011-2022 走看看