软件设计模式与体系结构 实验四 单例模式

【实验内容和要求】

在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计。用JAVA语言实现(C#控制台应用程序实现)该模式。绘制该模式的UML图。

一、实验目的:

1) 掌握单例模式(Singleton)的特点

2) 分析具体问题,使用单例模式进行设计。

 

二、实验环境:

       Eclipse

 

 

三、实验内容:

模式UML

【模式代码(JAVA语言实现)】

class PrintSpoolerSingleton {

          private static PrintSpoolerSingleton instance = null;

          // 私有化构造方法,外界无法通过new创建此类的实例

          private PrintSpoolerSingleton(){};

          //静态工厂方法 synchronized 同步方法加锁,保证每次只有一个线程进入

          public static synchronized PrintSpoolerSingleton getInstance() {

                    if (instance == null) {

                         System.out.println("创建打印池!");

                         instance = new PrintSpoolerSingleton();

                    } else {

                         System.out.println("打印池正在工作中!");

                    }

                    return instance;

          }

}

public class Singleton {

     public static void main(String a[]) {

          PrintSpoolerSingleton ps1 = null, ps2 = null;

          ps1.getInstance();

          ps2.getInstance();

     }

}

【运行截图】

四、心得体会:

单例模式主要适用于以下情况:

1)确保一个类仅有一个唯一的实例,并且提供一个全局的访问点

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值