单例模式

软件设计                  石家庄铁道大学信息学院

 

实验7:单例模式

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

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

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

 
   

 

 

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

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

实验要求:

1.  画出对应的类图;

 

 

 

2.  提交源代码;

 

Main

public class Main {

    public static void main(String [] args) {

        S_num sno1=S_num.getintance();

        System.out.println("第一次获取学号"+sno1.getNum());

        S_num sno2=S_num.getintance();

        System.out.println("第二次获取学号"+sno2.getNum());

        System.out.println("内容是否相等:" + (sno1.getNum()==sno2.getNum()));

         System.out.println("是否是相同对象:" + (sno1==sno2));

    }

}

 

S_num

public class S_num  {

    private static S_num sno=null;

    private int num=0;

    private S_num() {

    }

    public static S_num getintance() {

        // TODO Auto-generated method stub

        if(sno==null) {

            System.out.println("第一次办理学生证,分配新号码!");

            sno=new S_num();

            sno.setNum(20183597);

        }

        else {

            System.out.println("重复办理学生证,获取旧号码!");

        }

        return sno;

    }

    public int getNum() {

        return num;

    }

    public void setNum(int num) {

        this.num = num;

    }

   

}

 

 

 

 

 

#include <iostream>

 

using namespace std;

 

class S_num{

private:

    static S_num sno;

    static int num;

public:

    static S_num getintance() {

       // TODO Auto-generated method stub

       if(num==0) {

           cout<<"第一次办理学生证,分配新号码!"<<endl;

           sno.setNum(20194171);

       }

       else {

           cout<<"重复办理学生证,获取旧号码!"<<endl;

       }

       return sno;

    }

    int getNum() {

       return num;

    }

    void setNum(int n) {

       num = n;

    }

};

 

int S_num::num = 0;

S_num S_num::sno = S_num();

 

 

int main()

{

    S_num sno1=S_num().getintance();

    cout<<"第一次获取学号"<<sno1.getNum()<<endl;

    S_num sno2=S_num().getintance();

    cout<<"第二次获取学号"<<sno2.getNum()<<endl;

    cout<<"内容是否相等:"<<(sno1.getNum()==sno2.getNum())<<endl;

    //cout<<"是否是相同对象:"<<(sno1==sno2)<<endl;

}

 

 

 

 

3.注意编程规范。

 

posted @ 2021-10-17 13:09  我试试这个昵称好使不  阅读(74)  评论(0)    收藏  举报