实验7:单例模式

实验7:单例模式

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

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

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

 
   

 


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

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

实验要求:

1.画出对应的类图;

 

2.提交源代码;

java

1.Client

package test7;

public class Client {

public static void main(String[] args) {

StudentID stu1,stu2;

stu1=StudentID.getStudentID();

stu2=StudentID.getStudentID();

String str1,str2;

str1=stu1.getID();

str2=stu2.getID();

System.out.println("第一次学号:"+str1);

System.out.println("第二次学号:"+str2);

}

}

2.

package test7;

public class StudentID {

private static StudentID instance=null;

private String ID;

public String getID() {

return ID;

}

public void setID(String iD) {

ID = iD;

}

private StudentID()

{

}

public static StudentID getStudentID()

{

if(instance==null) {

instance=new StudentID();

instance.setID("20194080");

}

else

{

System.out.println("一个学生只能有一个学号");

}

return instance;

}

}

C++

#include "stdafx.h"

using namespace std;

class Student

{

private:

 string ID;

 static Student* instance ;

 Student(){}

public:

string getID() {

return ID;

}

void setID(string iD) {

ID = iD;

}

static Student* getInstance(){

if (instance==NULL){

instance = new Student();

cout << "入学分配学号" << endl;

instance->setID("20193965");

}

else

cout << "已经入学,学号唯一" << endl;

return instance;

}

};

Student* Student::instance=NULL;

int _tmain(int argc, _TCHAR* argv[])

{

Student* s, *s1;

string sID, s1ID;

s = Student::getInstance();

s1 = Student::getInstance();

cout << "s的学号为" << s->getID() << endl;

cout << "s1的学号为" << s1->getID() << endl;

cout << "s的地址为" << s << endl;

cout << "s1的地址为" << s1 << endl;

system("pause");

return 0;

}

3.注意编程规范。

posted @ 2022-10-25 19:31  萧贾jzm  阅读(44)  评论(0编辑  收藏  举报
//歌单id