10.24
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
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

浙公网安备 33010602011771号