哈尔滨工业大学华德应用技术学院
实 验 报 告
课程名称: 软件设计模式 系 别: 计算机应用技术系 专 业: 软件工程 学 号: 1099111130 姓 名: 陈天任
学 期: 2012年春季学期 实验成绩:
计算机应用技术系 监制
实验名称一:单例模式 实验时间:2012.4.21 学时:2 实验地点:s203 实验目的:掌握饿式单例、懒式单例模式的基本实现形式,并体会两种实现方式的特点。掌握单例模式的基本应用。 实验步骤: 在项目的开发过程中,经常需要读取配置文件,根据配置文件的参数决定具体的软件业务逻辑。ReadConfig.java程序实例实现了从配置文件”zzr.ini”文件中读取data参数值的功能。 zzr.ini 文件内容如下:data=123456789 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class ReadConfig {
private String paramA; public ReadConfig() { } public String getParamA() {return paramA;} public void setParamA(String paramA) { } - 1 -
Properties p=new Properties(); try { } catch (FileNotFoundException e) { { } e.printStackTrace(); e.printStackTrace(); } catch (IOException e) p.load(new FileInputStream(\)); this.paramA=p.getProperty(\); this.paramA = paramA;
public static void main(String args[]) { ReadConfig rc=new ReadConfig(); System.out.println(\配置文件的值为:\+rc.getParamA());} } 1、运行如上程序写出运行结果 配置文件的值为:123456789 2、如上程序,参照JDK帮助文档,逐行写出注释。 import java.io.*;//引入IO包 import java.util.Properties;//引入util包的Properties类 public class ReadConfig //创建ReadConfig类 { private String paramA;//定义个私有的字符串 public ReadConfig() //第一构造方法 { Properties p=new Properties();//new 一个Propertier类的实例 try //抓文件不存在和io异常 { p.load(new FileInputStream(\));//创建连接文件的流 this.paramA=p.getProperty(\);//设置paramA的值等于文件中的DATA的属性 } } public String getParamA() //定义一个方法返回字符串类型的paramA的值 {return paramA;} public void setParamA(String paramA) //定义一个方法设置paramA的值 {this.paramA = paramA;} public static void main(String args[])//main 主方法 { ReadConfig rc=new ReadConfig();//实例化ReadConfig一个实例 System.out.println(\配置文件的值为:\+rc.getParamA());//输出catch (FileNotFoundException e)//处理异常 { e.printStackTrace();//在控制台显示异常,给开发者看的 } catch (IOException e) { } e.printStackTrace(); paramA的值 } }
- 2 -
3、在程序中,通过new ReadConfig();来得到配置文件的内容。在一个项目中,有可能多处使用配置文件,就需要我们多次进行new操作。每一次的new都是一次读取外部文件的过程,然后将读取到得的参数值,放到内存中。这样势必会造成系统资源的浪费。把如上问题总结一下:能不能再系统运行的过程中,控制某个类仅有一个实例。 import java.io.*; import java.util.Properties; public class ReadConfig { private static String paramA=null; private static ReadConfig rc=null; private ReadConfig() { } public static synchronized ReadConfig getIntance() { if(rc == null) { } return rc;} public String getParamA() {return paramA;} public static void main(String args[]) { ReadConfig fq=ReadConfig.getIntance(); System.out.println(\配置文件的值为:\+fq.getParamA());} } rc=new ReadConfig(); Properties p=new Properties(); try { } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) {e.printStackTrace();} p.load(new FileInputStream(\)); paramA=p.getProperty(\); 实验总结:通过实验对单例模式有了深刻的理解。知道了单例模式具体两种的的使用方法和何时使用单例模式等。
- 3 -
实验名称二:简单工厂模式 实验时间:2012.4.21 学时:2 实验地点:s203 实验目的:掌握简单工厂模式的基本实现形式。体会单工厂模式的特点。掌握单工厂模式的基本应用。 实验步骤: IUserDAO.java public interface IUserDAO {void getUserByID(int id);} MSServerDAO.java public class MSServerUserDAO implements IUserDAO { public void getUserByID(int id) { }} System.out.println(\+id); Factory.java public class factory { } Zzr.java
- 4 -
public static IUserDAO createISD(int a) { } IUserDAO user = null; if(a == 1) { } return user; user = new MSServerUserDAO();