实验报告
课程名称 | : |
专业班级 | : |
姓名 | : |
学号 | : |
指导老师 | : |
日期 | : |
福州理工学院工学院
二〇一七年三月
实验7 [单例模式的应用]
一、实验目的
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();
}else {
System.out.println("已经产生了一个月亮,不能产生新的月亮!");
}
return mood;
}
单例模式的几种实现方式 public void getDistance() {
System.out.println("我是月亮,我的直径是:"+distance+"km.");
}
}
运行结果如下:
第二种:饿汉式单例
该模式的特点是类一旦加载就创建一个单例,保证在调用 getMood 方法之前单例已经存在了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论