实验报告
福州理工学院工学院
二〇一七年三月
实验7 [单例模式的应用]
一、实验目的
personnel>路漫漫兮其修远兮
1.理解单例模式的定义
2.掌握单例模式的结构类图和典型代码
二、实验准备与环境
1.实验准备
单例模式类图
2.实验环境
芡实的食用方法
StarUML(或)初中数学应用题
三、实验要求
1、世界上只有一个月亮,月亮的直径是3476.28km,无论在中国还是在美国,我们所看到的都是同一个月亮。使用单例模式实现无论我们在哪所看到的月亮是同一个月亮美女诱惑性感(饿汉单例模式、懒汉单例模式),绘制类图并编程实现。
2、使用单例模式的思想模拟实现数据库连接池功能,确保系统中连接类的对象只能存在有限个,如两个或三个,设计并编写代码实现一个多例类。
四、实验步骤
1.1单例模式的结构与实现:
结构如图所示。
1.2 单例模式的实现
单例模式的两种模式:
第一种:懒汉式单例
该模式的特点是类加载时没有生成单例,只有当第一次调用 getMood 方法时才去创建这个单例。代码如下:
public class Mood {
private static Mood mood=null;
private static double distance=3476.28;
private Mood() {
System.out.println("产生一个月亮");
}
public static synchronized Mood getMood() {
//在getMood方法上加上同步
if(mood==null) {
mood=new Mood();
}el山洞探险 {
System.out.println("已经产生了一个月亮,不能产生新的月亮!");
}
送呈 return mood;
}
public void getDistance() {
System.out.println("我是月亮,我的直径是:"+distance尽管去做+"km.");
}
}
运行结果如下:
第二种:饿汉式单例
该模式的特点是类一旦加载就创建一个单例,保证在调用 getMood 方法之前单例已经存在了。