当前位置:文档之家› 1099111130设计模式实验报告

1099111130设计模式实验报告

publicinterfaceSend {
voidsend();
}
publicclassXMLSendimplementsSend {
publicvoidsend() {
System.out.println("XML导出");
}
}
publicclassTXTSendimplementsSend {
publicvoidsend() {
try
{
p.load(newFileInputStream("d:/zzr.ini"));
paramA=p.getProperty("data");
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e)
{e.printStackTrace();}
实验名称三:工厂方法模式
实验时间:2012.5.7
学时:2
实验地点:
实验目的:掌握工厂方法模式的基本实现形式,体会工厂方法模式的特点,掌握工厂方法模式的基本应用。
实验步骤:实现一个导出数据的框架,来让用户选择数据的导出方式,要求导出的数据格式:xml,txt。具体的导出方法只提供示意实现即可,重点体会框架的总体设计。
}}
3.3扩展IUserDAO接口实现---->MySqlUserDAO,并且完成客户端,对扩展功能的调用。
IUserDAO.java
publicinterfaceIUserDAO {voidgetUserByID(intid);}
MSServerDAO.java
publicclassMSServerUserDAOimplementsIUserDAO {
}
publicstaticsynchronizedReadConfig getIntance()
{
if(rc==null) {
rc=newReadConfig();
}
returnrc;}
publicString getParamA()
{returnparamA;}
publicstaticvoidmain(String args[])
System.out.println("TXT导出");
}
}
publicclassSQLSendimplementsSend {
publicvoidsend() {
System.out.println("SQL导出");
}
}
publicabstractclassSendFactory {
publicabstractSend factoryMethod();
returnuser;
}
}
Zzr.java
publicclasszzr {
publicstaticvoidmain(String[] args) {
IUserDAO fq = factory.createISD(1);
fq.getUserByID(7);
}
}
实验总结:通过实验的学习知道何时应用简单工厂模式和使用简单工厂带来的好处。
publicvoidgetFactoryMethod(){
factoryMethod().send();
}
}
publicclassXMLFactoryextendsSendFactory {
publicSend factoryMethod() {
{ReadConfig fq=ReadConfig.getIntance();
System.out.println("配置文件的值为:"+fq.getParamA());}
}
实验总结:通过实验对单例模式有了深刻的理解。知道了单例模式具体两种的的使用方法和何时使用单例模式等。
实验名称二:简单工厂模式
实验时间:2012.4.21
{returnparamA;}
publicvoidsetPar个方法设置paramA的值
{this.paramA= paramA;}
publicstaticvoidmain(String args[])//main主方法
{
ReadConfig rc=newReadConfig();//实例化ReadConfig一个实例
{
Properties p=newProperties();//new一个Propertier类的实例
try//抓文件不存在和io异常
{
p.load(newFileInputStream("d:/zzr.ini"));//创建连接文件的流
this.paramA=p.getProperty("data");//设置paramA的值等于文件中的DATA的属性
学时:2
实验地点:s203
实验目的:掌握简单工厂模式的基本实现形式。体会单工厂模式的特点。掌握单工厂模式的基本应用。
实验步骤:
IUserDAO.java
publicinterfaceIUserDAO {voidgetUserByID(intid);}
MSServerDAO.java
publicclassMSServerUserDAOimplementsIUserDAO {
}
publicclassXMLFactoryextendsSendFactory {
publicSend factoryMethod() {
returnnewXMLSend();
}
}
publicclassTXTFactoryextendsSendFactory {
publicSend factoryMethod() {
publicvoidgetUserByID(intid) {
System.out.println("ID:"+id);
}}
Factory.java
publicclassfactory {
publicstaticIUserDAO createISD(inta) {
IUserDAOuser=null;
if(a == 1) {
importjava.io.*;
importjava.util.Properties;
publicclassReadConfig
{privatestaticStringparamA=null;
privatestaticReadConfigrc=null;
privateReadConfig()
{
Properties p=newProperties();
}
publicstaticvoidmain(String args[])
{ReadConfig rc=newReadConfig();
System.out.println("配置文件的值为:"+rc.getParamA());}
}
1、运行如上程序写出运行结果
配置文件的值为:123456789
2、如上程序,参照JDK帮助文档,逐行写出注释。
user=newMSServerUserDAO();
}
returnuser;
}
}
Zzr.java
publicclasszzr {
publicstaticvoidmain(String[] args) {
IUserDAO fq = factory.createISD(1);
fq.getUserByID(7);
System.out.println("配置文件的值为:"+rc.getParamA());//输出paramA的值
}
}
3、在程序中,通过newReadConfig();来得到配置文件的内容。在一个项目中,有可能多处使用配置文件,就需要我们多次进行new操作。每一次的new都是一次读取外部文件的过程,然后将读取到得的参数值,放到内存中。这样势必会造成系统资源的浪费。把如上问题总结一下:能不能再系统运行的过程中,控制某个类仅有一个实例。
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Properties;
publicclassReadConfig
{
privateStringparamA;
returnnewTXTSend();
}
}
publicclassFanqiang {
publicstaticvoidmain(String[] args) {
SendFactory zzr =newTXTFactory();
zzr.getFactoryMethod();
}
}
3.4用户对于此框架,提出了新的需求,要求可以导出数据库格式的数据文件。
哈尔滨工业大学华德应用技术学院
实验报告
课程名称:
软件设计模式
系别:
计算机应用技术系
专业:
软件工程
学号:
1099111130
姓名:
陈天任
学期:
2012年春季学期
实验成绩:
计算机应用技术系监制
实验名称一:单例模式
实验时间:2012.4.21
学时:2
实验地点:s203
实验目的:掌握饿式单例、懒式单例模式的基本实现形式,并体会两种实现方式的特点。掌握单例模式的基本应用。
{
相关主题