菜鸟的博客

纵有疾风起,人生不言弃。

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

软件设计--实验七

实验7:单例模式

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

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

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

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

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

 

类图:

复制代码
```mermaid
classDiagram
    Client ..> StuNo : uses
    StuNo --> "1" StuNo : instance
    
    class StuNo {
        -instance: StuNo
        -no: String
        -StuNo()
        +getInstance(): StuNo
        -setStuNo(no: String): void
        +getStuNo(): String
    }
    
    class Client {
        +main(args: String[]): void
    }
```
复制代码

源码:

复制代码
package Tutorial07;

public class StuNo {

    private static StuNo instance = null;
    private String no;

    private StuNo(){}


    public static StuNo getInstance(){

        if(instance == null){
            System.out.println("第一次办理学生证,分配新号码!");
            instance = new StuNo();
            instance.setStuNo("20223929");
        }
        else{
            System.out.println("重复办理旧学生证,获取旧号码!");
        }
        return instance;
    }

    private void setStuNo(String no){
        this.no = no;
    }

    public  String getStuNo(){
        return this.no;
    }

}
复制代码
复制代码
package Tutorial07;

public class Client {

    public static void main(String[] args) {
        StuNo no1,no2;
        no1 = StuNo.getInstance();
        no2 = StuNo.getInstance();
        System.out.println("学生证号码是否一致"+(no1==no2));


        String str1,str2;
        str1 = no1.getStuNo();
        str2 = no2.getStuNo();
        System.out.println("第一次号码:"+str1);
        System.out.println("第二次号码:"+str2);
        System.out.println("内容是否相等:"+str1.equalsIgnoreCase(str2));
        System.out.println("是否是相同对象:"+(str1 == str2));
    }
}
复制代码

结果如下:

第一次办理学生证,分配新号码!
重复办理旧学生证,获取旧号码!
学生证号码是否一致true
第一次号码:20223929
第二次号码:20223929
内容是否相等:true
是否是相同对象:true

 

posted on   hhmzd233  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2023-10-30 读后感:《程序员修炼之道》第三部分 - 提供有价值的工作
点击右上角即可分享
微信分享提示