zoukankan      html  css  js  c++  java
  • JAVA 设计模式—单例模式

    JAVA中的单例模式是一种广泛使用的设计模式,是Java里23种设计模式之一。单例模式的作用是保证在JAVA程序中,某个类只有一个程序存在。

    这里简单介绍其两种基本写法:饿汉式和懒汉式。

    饿汉式与懒汉式区别在于饿汉式在类加载时就对实例进行创建,优点是线程安全,缺点是不管用不用都占用内存;懒汉式是单例在需要的时候采取创建的,如果单例已经创建,再次调用将不会创建新的对象,而是直接返回之前创建的对象,优点是占用内存小,缺点是加载速度慢,线程不够安全;

    这里以车举例,同时定义一个成员变量司机来证实唯一性。

    饿汉式

    public class Car {  //创建车类
        private String driver;  //定义成员变量司机名
        private static Car car = new Car()  //直接在初始化成员变量时实例化一辆车;
        private Car() {  //为保证车的唯一,将构造方法设为私有的,这样类外面就无法使用new Car()来实例化一辆车了;
            
        }
        public static Car getCar() {  //定义一个公开的成员方法,用来获取这辆车;
            
            return car;
        }
        public String getDriver() {
            return driver;
        }
        public void setDriver(String driver) {
            this.driver = driver;
        }
    }

    懒汉式

    public class Car {  
        private String driver;  
        private static Car car;  //定义成员变量车,其类型是类本身;默认为null
        private Car() {  
            
        }
        public static Car getCar() {  
            if (car == null) {  //当这辆车指向为null时,实例化一辆车,如果不是null,返回这辆车;
                car = new Car();
            }
            return car;
        }
        public String getDriver() {
            return driver;
        }
        public void setDriver(String driver) {
            this.driver = driver;
        }
    }

    测试

    public class Test{
        public static void main(String[] args) {
            
            Car car1 = Car.getCar();  //直接用类名调用静态方法获取一辆车;对象名为car1
            Car car2 = Car.getCar();  //再次调用方法获取一辆车;对象名为car2
            car1.setDriver("小明");  //将car1的司机命名为小明
            System.out.println(car2.getDriver());  //打印car2的司机名仍然是小明,说明这两辆车是同一辆车,也就证明了这辆车的唯一性。
                
        }    
            
    }
  • 相关阅读:
    Android开发之Intent.Action
    package.json中版本号前的符号含义
    npm ERR! code 128
    前端vue项目添加单元测试及sonar配置
    npm ERR! code: 'EPERM' npm安装依赖时报错
    vue单文件中,解决相同ref出现多个的问题
    'NODE_ENV' 不是内部或外部命令,也不是可运行的程序 或批处理文件
    程序调试问题呈现
    Qt三维点云散点数据显示QtDataVisualization
    win环境下获取利用qt获取u盘信息
  • 原文地址:https://www.cnblogs.com/wyc1991/p/9021732.html
Copyright © 2011-2022 走看看