博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WUST 设计模式 实验一 单例模式的应用
阅读量:5293 次
发布时间:2019-06-14

本文共 1799 字,大约阅读时间需要 5 分钟。

实验一 单例模式的应用

实验目的

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

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

实验内容和要求

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

2.1
        通常客户端使用这个类是通过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图

2.2

运行截图

2.3

小结

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

转载于:https://www.cnblogs.com/wowpH/p/11060832.html

你可能感兴趣的文章
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Min Stack
查看>>
从LazyPhp说起
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
软件测试(基础理论一)摘
查看>>
consonant combination
查看>>
基于Flutter实现的仿开眼视频App
查看>>
析构器
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
https通讯流程
查看>>
Swagger简单介绍
查看>>
C# 连接SQLServer数据库自动生成model类代码
查看>>
关于数据库分布式架构的一些想法。
查看>>
大白话讲解 BitSet
查看>>
sql语句中where与having的区别
查看>>