实验名称:实验4 设计模型实验2 学期:2023-2023学年 第二学期
一、实验目的
1.纯熟使用面向对象设计原则对系统进行重构;
2.纯熟使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,涉及单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。
二、实验规定
1. 选择合适的面向对象设计原则对系统进行重构,对的无误地绘制重构之后的类图;
2. 结合实例,对的无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图;
3. 实现单例模式、策略模式、装饰模式和适配器模式,代码运营对的无误。
三、实验内容
1. 现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将号码分派给居民,假如之后由于遗失等因素补办时,还是使用本来的身份证号码,不会产生新号码,现使用单例模式模拟该场景。
1)类图日本全面侵华
2)实现代码:户口迁移证
public class IdClient {
public static void main(String[] args) {
IdentityCardNo.getInstance();
IdentityCardNo.getInstance();
}
}
package Refactoring1;
public class IdentityCardNo {
private static IdentityCardNo instance;
private String no;
private IdentityCardNo() {
}
public static IdentityCardNo getInstance() {
if (instance == null) {
System.out.println("第一次办理身份证,分派新号码");
instance = new IdentityCardNo();
instance.tNo("No");
System.out.println("身份证号码为:" + instance.getNo());
叶根友
} el {
System.out.println("反复办理身份证,获取旧号码!");
}
我的小米云服务 return instance;
}
public String getNo() {
return no;
}
public void tNo(String no) {
this.no = no;
}
}
2. 每一麻将局都有两个骰子,因此骰子就应当是双例类。现使用多例模式模拟该场景。
1)类图
2)实现代码:
import java.util.Date;
import java.util.Random;劳动心得50字
public class Dice {
通时达变
private 独坐敬亭山的意思static Dice die1 = new Dice();
private static Dice die2 = new Dice();
private Dice() {
}
public static Dice getInstance(int whichOne) {
if (whichOne == 1) {
return die1;
} el {
return die2;
}
}淮南是几线城市
public synchronized int dice() {
Date d = new Date();
Random r = new Random(d.getTime());
int value = r.nextInt();
value = Math.abs(value);
value = value % 6;
value += 1;
return value;
}
}
import java.util.Random;
import java.util.Date;
public class DiceClient {
private static Dice die1, die2;