zoukankan      html  css  js  c++  java
  • 单例模式

    Java中单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。

    仅有一个实例=========》创建一个静态的本类类型的成员属性

    自行实例化======.====》就是要我们将此类的个构造私有化

    向整个系统提供=======》创建一个供外部访问的接口(即以public修饰的返回值类型为本类类型的方法)

    单例模式的实现方式有三种:

      懒汉式:不调用不赋值

      饿汉式:建类即赋值

      双重锁:两次synchronized

    直接上例子:

    public class Student{
        private static Student stu;//懒汉式
        
        private Student(){
        //构造方法私有化
        }
        
        public static Student newStudent(){
            if(stu==null){
                stu=new Student();//调用此方法时实例化本类的唯一对象
            }
        }
    }        
    public class Student2 {
    
        // 01.创建一个静态的本类类型的成员属性
        private static Student2 stu = new Student2(); // 饿汉式
    
        // 02.私有化构造 不允许有 其他的构造
        private Student2() {
        }
    
        // 03.创建供外部访问的接口 返回值类型是Student
        public static synchronized Student2 getInstance() {
            return stu;
        }
    }
    public class Student3 {
    
        // 01.创建一个静态的本类类型的成员属性

    //双重锁
    private static Student3 stu; // 02.私有化构造 不允许有 其他的构造 private Student3() { } // 03.创建供外部访问的接口 返回值 肯定是我们Student public static synchronized Student3 getInstance() { if (stu == null) { // 证明用户是第一次访问 synchronized (Student3.class) { if (stu == null) { // 再次验证对象是否为空 stu = new Student3(); } } } return stu; // 如果stu有了 直接返回 不需要再次创建 } }
  • 相关阅读:
    oracle shrink
    PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法
    Oracle11g搭建DataGuard及主备切换方法总结【亲测可用】
    Dataguard主、备库切换方法总结
    CentOS下的Mysql的安装和使用
    在HP-UX上部署oracle客户端
    ORACLE 清理SYSAUX表空间
    第02节-BLE协议各层的形象化理解
    第01节-生活中的实例_医院的结构
    仿照手机写一个WIFI的操作程序
  • 原文地址:https://www.cnblogs.com/vic_/p/7617317.html
Copyright © 2011-2022 走看看