• 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的司机名仍然是小明,说明这两辆车是同一辆车,也就证明了这辆车的唯一性。
                
        }    
            
    }
  • 相关阅读:
    合并两个排序的链表
    C#中调用C++的DLL文件
    C#获取进程的主窗口句柄
    在VS2008中编译纯c/c++程序并由c#调用过程 及 C++引用c#dll 模拟登陆实现
    C#多屏幕显示器编程
    Windows系统下的多显示器模式开发日记
    在 C# 中调用 C++
    C# 中调用C++ DLL (P/Invoke)
    C#多屏时控制窗体显示在哪个显示器上
    c# Winform 开发分屏显示应用程序
  • 原文地址:https://www.cnblogs.com/wyc1991/p/9021732.html
Copyright © 2020-2023  润新知