实验一 单例模式的应用

实验目的

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

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

实验内容和要求

很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。



        通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件 的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。

        事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。

实验环境

编译环境:Eclipse

UML图: StarUML

源程序

/**
* @Author wowpH
* @Date 2019年4月4日 下午1:35:45
*/
public class Appconfig { // 一个自己的实例
private static Appconfig config;
// 一个language(语言)的参数
private String language;
// 锁对象
private static Object lock = new Object(); private Appconfig() {
setLanguage("English");
} /**
* @return Appconfig实例
*/
public static Appconfig getAppconfig() {
if(null == config) {
synchronized(lock) {
if(null == config) {
config = new Appconfig();
}
}
}
return config;
} /**
* @return the language
*/
public String getLanguage() {
return language;
} /**
* @param language the language to set
*/
public void setLanguage(String language) {
this.language = language;
} }
/**
* @Author wowpH
* @Date 2019年4月4日 下午1:35:15
*/
public class Client { private Appconfig configOne, configTwo; public Client() {
configOne = Appconfig.getAppconfig();
configTwo = Appconfig.getAppconfig(); System.out.println(configOne.getLanguage());
System.out.println(configTwo.getLanguage()); configOne.setLanguage("中文"); System.out.println(configOne.getLanguage());
System.out.println(configTwo.getLanguage());
} /**
* @param args
*/
public static void main(String[] args) {
new Client();
} }

UML图

运行截图

小结

本次实验主要学习的是单例模式。在自己动手写代码的过程中才发现听懂和写出代码是两个概念,本以为自己都会了,一写起来还是慢吞吞的。或许这才是实验的意义吧,使我们对基本概念有一个更深层次的理解。在单利模式中更是用到了锁这个概念,又进一步拓展了我们的知识。运用软件画出UML图感觉比代码更加直观的体会一些细节的处理,例如:私有还是共有,返回值,属性等等。

WUST 设计模式 实验一 单例模式的应用的更多相关文章

  1. WUST 设计模式 实验九 观察者模式的应用

    实验九 观察者模式的应用 一.实验目的 掌握外观模式(Observer)的特点: 分析具体问题,使用外观模式进行设计. 二.实验内容和要求   网上商店中如果商品(product)在名称(name). ...

  2. 【白话设计模式四】单例模式(Singleton)

    转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factor ...

  3. php设计模式笔记:单例模式

    php设计模式笔记:单例模式 意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现 ...

  4. Java设计模式之《单例模式》及应用场景

    摘要: 原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6510196.html 所谓单例,指的就是单实例,有且仅有一个类实例,这个单例不应该 ...

  5. Java设计模式之【单例模式】

    Java设计模式之[单例模式] 何为单例 在应用的生存周期中,一个类的实例有且仅有一个 当在一些业务中需要规定某个类的实例有且仅有一个时,就可以用单例模式 比如spring容器默认初始化的实例就是单例 ...

  6. Java设计模式中的单例模式

    有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...

  7. C#设计模式学习笔记-单例模式随笔

    最近学习 设计模式,从单例模式入手 啥是单例模式: 要实现一个单例类的话,首先,肯定是不能让用户自行生产的,那就是说明不能让用户new,所以,就必须把构造函数设置成为私有的 因为静态变量的生命周期跟整 ...

  8. IOS设计模式浅析之单例模式(Singleton)

    说在前面 进入正式的设计模式交流之前,扯点闲话.我们在项目开发的过程中,经常会不经意的使用一些常见的设计模式,如单例模式.工厂方法模式.观察者模式等,以前做.NET开发的时候,认真拜读了一下程杰老师的 ...

  9. C#设计模式学习笔记-单例模式(转)

    C#设计模式学习笔记-单例模式 http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html 最近在学设计模式,学到创建型模式的时候,碰到 ...

随机推荐

  1. Linux下vim卡死原因

    使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里. 解决方案: 经查,原来Ctrl+S在Linux里是锁定屏幕的快捷键,如果要解锁,按下Ctrl+Q就可以了. 经验总结: 牢记这两个VIM组合键 ...

  2. 国内Archlinux arm的镜像源

    清华 http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/arch/arch/repo 中科大 http://mirrors.ustc.edu.cn/ar ...

  3. 解析复杂的嵌套数据结构-jsonpath

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...

  4. beyond compare秘钥被禁

    错误提示:This license key has been revoked xxxxx 即: Windows 系统: 解决方法: 删除以下目录中的所有文件即可. C:\Users\Administr ...

  5. Buuctf pwn1 详细wp

    目录 程序基本信息 程序溢出点 确定返回地址 编写exp脚本 成功getshell 程序基本信息 我们可以看到这是一个64程序,没有保护开启. 程序溢出点 gets函数可以读取无限字符,存在栈溢出. ...

  6. [RK3399] /bin/sh: 1: lz4c: not found

    CPU:RK3399 系统:Android 8.1 第一次在 RK3399 编译 Android 8.1 的系统,编译内核过程中报错如下: /bin/sh: : lz4c: not found mak ...

  7. Ionic4.x 中的 UI 组件(UI Components) 日期组件

    1.日期组件的基本使用 官方文档:https://ionicframework.com/docs/api/datetime 模板中: <ion-datetime display-format=& ...

  8. python小白之np功能快速查

    np一些用法 np.a np.array([1,2,3],dtype=int)  #建立一个一维数组, np.array([[1,2,3],[2,3,4]])  #建立一个二维数组. np.arang ...

  9. zblog模板怎么安装?zblog主题安装教程

    有很多初次使用zblog的新手还会问我“zblog模板怎么安装?”,那么本文就专门给大家介绍下zblog主题安装教程. zblog现在分为zblogasp和zblogphp两个版本,两个版本的模板主题 ...

  10. 五句话搞定Python、JavaScript作用域

    这个银角的看家之作了吧,哈哈哈,剽窃下,原地址在这:点我点我 Python与JavaScript基本相同,但声明提前一项略有不同. JavaScript.Python中无块级作用域 在Java或C#中 ...