WUST 设计模式 实验一 单例模式的应用

实验一 单例模式的应用

实验目的

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图感觉比代码更加直观的体会一些细节的处理,例如:私有还是共有,返回值,属性等等。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值