21

实验7:单例模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

2. 提交源代码;

package Tutorial_7;

 

/**

 * @author mendianyu

 */

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;

    }

}

 

 

package Tutorial_7;

 

/**

 * @author mendianyu

 */

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));

    }

}

3.注意编程规范。

 

posted @ 2025-01-06 23:25  恋恋恋白  阅读(7)  评论(0)    收藏  举报