设计模式--单例模式

实验7:单例模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解单例模式的动机,掌握该模式的结构;

2、能够利用单列模式解决实际问题。

[实验任务]:学号的单一

仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。

类图

源代码

public class StuID
{
    // 单例模式中的实例
    private static StuID instance = null;
    // 学号
    private String id;

    private StuID()
    {
        //私有构造函数,确保只能通过getInstance()获取实例
    }

    public static StuID getInstance()
    {
        if (instance == null)
        {
            System.out.println("第一次办理校园卡,分配新学号");
            // 创建新的实例
            instance = new StuID();
            // 设置学号
            instance.setID("20213971");
        } else
        {
            System.out.println("重复办理校园卡,获取旧学号");
        }
        return instance;
    }

    //设置学号
    private void setID(String id)
    {
        this.id = id;
    }

    //获取学号
    public String getID()
    {
        return this.id;
    }
}

public class Client
{
    public static void main(String[] args)
    {
        // 声明两个学号对象引用变量
        StuID id1, id2;
        // 获取第一个学号对象
        id1 = StuID.getInstance();
        // 获取第二个学号对象
        id2 = StuID.getInstance();
        // 检查两个学号对象是否相同
        System.out.println("学号是否一致: " + (id1 == id2));

        // 声明两个学号值变量
        String str1, str2;
        // 获取学号的值
        str1 = id1.getID();
        str2 = id2.getID();

        System.out.println("第一次学号: " + str1);
        System.out.println("第二次学号: " + str2);
        System.out.println("内容是否相等: " + (str1.equalsIgnoreCase(str2)));
        System.out.println("是否是相同对象: " + (str1 == str2));
    }
}

运行效果

 

 

相关推荐

  1. 设计模式

    2023-12-27 08:38:04       63 阅读
  2. 设计模式

    2023-12-27 08:38:04       42 阅读
  3. 设计模式

    2023-12-27 08:38:04       40 阅读
  4. 设计模式

    2023-12-27 08:38:04       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 08:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 08:38:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 08:38:04       82 阅读
  4. Python语言-面向对象

    2023-12-27 08:38:04       91 阅读

热门阅读

  1. Mybatis-Plus基础之Mapper的映射规则

    2023-12-27 08:38:04       42 阅读
  2. C++设计模式:单例模式(饿汉式、懒汉式)

    2023-12-27 08:38:04       60 阅读
  3. 【数据库】postgressql设置数据库执行超时时间

    2023-12-27 08:38:04       61 阅读
  4. 黑客常用端口利用总结

    2023-12-27 08:38:04       42 阅读
  5. python之列表动态生成和重复数据处理

    2023-12-27 08:38:04       60 阅读
  6. VSCode 加Cortex-Debug嵌入式调试方法

    2023-12-27 08:38:04       53 阅读
  7. codeforces 1904B

    2023-12-27 08:38:04       58 阅读
  8. 单例模式你了解嘛?

    2023-12-27 08:38:04       50 阅读
  9. Mac_通过chmod处理文件权限

    2023-12-27 08:38:04       44 阅读
  10. 处理go中clientv3连接etcd包异常

    2023-12-27 08:38:04       54 阅读