第5次实验张超红抽象工厂方法设计模式实验.docx
《第5次实验张超红抽象工厂方法设计模式实验.docx》由会员分享,可在线阅读,更多相关《第5次实验张超红抽象工厂方法设计模式实验.docx(12页珍藏版)》请在冰豆网上搜索。
第5次实验张超红抽象工厂方法设计模式实验
实验五—抽象工厂方法设计模式
专业:
软件工程班级:
java2班实验日期:
2015年3月14日报告退发(订正、重做)
学号:
123012012137姓名:
张超红
实验目的:
加深对抽象工厂方法设计模式及创建型设计模式原理的理解
实验环境:
C#.Net/VC++.Net或MyEclipse(Java)等
实验内容:
某单据管理系统中要求实现对采购、销售、库存的单据管理,系统的采购类的单据中有如采购单、收货单、应付帐单、付款单和退货单等,现使用抽象工厂方法设计模式设计该系统。
实验过程:
1、构建实现场景,给出需求中的问题描述
2、画出UML类图
3、实现代码
packageFactory;
importentity.ActuallyBills;
importentity.OriginalBills;
importentity.PurchaseForm;
importentity.ReceiveGoodsForm;
importentity.ReturnGoodsForm;
importPurchaseModule.AbstractPurchaseForm;
importPurchaseModule.AbstractSaleForm;
importPurchaseModule.AbstractStockForm;
/**
*
*@author张超红
*采购订单类工厂
*/
publicclassPurchaseFactoryimplementsAbstractFactory{
publicPurchaseFactory(){
//TODO自动生成的构造函数存根
}
//采购单据
@Override
publicAbstractPurchaseFormcreatePurchase(){
//TODO自动生成的方法存根
returnnewPurchaseForm();
}
//退货单据
publicAbstractPurchaseFormcreateReturnGoodsForm(){
returnnewReturnGoodsForm();
}
//实际支付单据
publicAbstractPurchaseFormcreateActualllyBills(){
returnnewActuallyBills();
}
//应该支付单据
publicAbstractPurchaseFormcreateOrignalBills(){
returnnewOriginalBills();
}
//收货单
publicAbstractPurchaseFormcreateReceiveGoodsBills(){
returnnewReceiveGoodsForm();
}
publicAbstractStockFormcreateStock(){
//TODO自动生成的方法存根
returnnull;
}
publicAbstractSaleFormcreateSale(){
//TODO自动生成的方法存根
returnnull;
}
}
packageFactory;
importentity.BankTransferForm;
importentity.BorrowingForm;
importentity.CashExpenseAccount;
importPurchaseModule.AbstractPurchaseForm;
importPurchaseModule.AbstractSaleForm;
importPurchaseModule.AbstractStockForm;
publicclassSaleFactoryimplementsAbstractFactory{
publicSaleFactory(){
//TODO自动生成的构造函数存根
}
@Override
publicAbstractPurchaseFormcreatePurchase(){
//TODO自动生成的方法存根
returnnull;
}
publicAbstractStockFormcreateStock(){
//TODO自动生成的方法存根
returnnull;
}
//现金支付销售
publicAbstractSaleFormcreateSale(){
//TODO自动生成的方法存根
returnnewCashExpenseAccount();
}
//借款单据销售
publicAbstractSaleFormcreateBorrowingForm(){
returnnewBorrowingForm();
}
//银行转账销售
publicAbstractSaleFormcreateBankTransffer(){
returnnewBankTransferForm();
}
}
packageFactory;
importentity.StockOutForm;
importentity.StockRntryForm;
importPurchaseModule.AbstractPurchaseForm;
importPurchaseModule.AbstractSaleForm;
importPurchaseModule.AbstractStockForm;
publicclassStockFactoryimplementsAbstractFactory{
publicStockFactory(){
//TODO自动生成的构造函数存根
}
@Override
publicAbstractPurchaseFormcreatePurchase(){
//TODO自动生成的方法存根
returnnull;
}
//入库
publicAbstractStockFormcreateStock(){
//TODO自动生成的方法存根
returnnewStockRntryForm();
}
//出库
publicAbstractStockFormOutStock(){
returnnewStockOutForm();
}
publicAbstractSaleFormcreateSale(){
//TODO自动生成的方法存根
returnnull;
}
}
packagePurchaseModule;
/**
*
*@author张超红
*
*/
publicinterfaceAbstractPurchaseFormextendsForm{
voiddisplay();
}
packagePurchaseModule;
publicinterfaceAbstractStockFormextendsForm{
voiddisplay();
}
packagePurchaseModule;
publicinterfaceAbstractSaleFormextendsForm{
voiddisplay();
}
packageentity;
importjava.util.Collection;
importjava.util.Date;
importPurchaseModule.AbstractPurchaseForm;
publicclassPurchaseFormimplementsAbstractPurchaseForm{
Stringform_no;
Datedate;
StringCreateFormPerson;
Stringtax_items;//税目
CollectiondataCollection;//导入单据
Stringdata;//单据
publicvoidadd(){
System.out.println("添加单据...");
}
publicvoiddelete(){
System.out.println("删除单据...");
}
publicvoidprint(){
System.out.println("打印...");
}
publicvoidexamine(){
System.out.println("审批...");
}
publicPurchaseForm(){
//TODO自动生成的构造函数存根
}
@Override
publicvoiddisplay(){
//TODO自动生成的方法存根
System.out.println("您的[采购单据]中的[采购单]如下...");
}
}
packageUtil;
importjava.io.File;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
publicclassXMLUtil{
publicstaticObjectgetBean(){
try{
System.out.println("正在从配置文件中读取数据...");
//创建DOM文档对象
DocumentBuilderFactorydFactory=DocumentBuilderFactory
.newInstance();
DocumentBuilderbuilder=dFactory.newDocumentBuilder();
Documentdoc;
doc=builder.parse(newFile("config.xml"));
//获取包含类名的文本节点
NodeListnl=doc.getElementsByTagName("className");
NodeclassNode=nl.item(0).getFirstChild();
StringcName=classNode.getNodeValue();
//通过类名生成实例对象并将其返回
Classc=Class.forName("Factory."+cName);
Objectobj=c.newInstance();
System.out.println("==="+obj);
returnobj;
}catch(Exceptione){
e.printStackTrace();
System.out.println(e.getMessage());
returnnull;
}
}
}
packagetest;
importPurchaseModule.AbstractPurchaseForm;
importUtil.XMLUtil;
importentity.PurchaseForm;
importFactory.AbstractFactory;
publicclasstest{
publicstaticvoidmain(String[]args){
AbstractFactoryfactory;
AbstractPurchaseFormpurchase;
factory=(AbstractFactory)XMLUtil.getBean();
purchase=factory.createPurchase();
purchase.display();
}
}
xmlversion="1.0"?
>
PurchaseFactory
实验讨论(效果分析):