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

  • 相关阅读:
    Codeforces Round #613 选讲
    Codeforces Round #612 选讲
    Codeforces917E
    一道题20
    LOJ#2244. 「NOI2014」起床困难综合症
    求欧拉回路
    *LOJ#2134. 「NOI2015」小园丁与老司机
    vim操作命令
    常见问题解决
    CentOS7下如何修改mysql的数据目录
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060832.html
Copyright © 2011-2022 走看看