1、第5次实验张超红抽象工厂方法设计模式实验实验五抽象工厂方法设计模式专业:软件工程 班级:java2班 实验日期:2015年 3 月 14 日 报告退发 (订正 、 重做) 学号:123012012137 姓名:张超红实验目的:加深对抽象工厂方法设计模式及创建型设计模式原理的理解实验环境:C#.Net/VC+.Net或MyEclipse(Java)等实验内容: 某单据管理系统中要求实现对采购、销售、库存的单据管理,系统的采购类的单据中有如采购单、收货单、应付帐单、付款单和退货单等,现使用抽象工厂方法设计模式设计该系统。实验过程:1、构建实现场景,给出需求中的问题描述2、画出UML类图 3、实现代
2、码package Factory;import entity.ActuallyBills;import entity.OriginalBills;import entity.PurchaseForm;import entity.ReceiveGoodsForm;import entity.ReturnGoodsForm;import PurchaseModule.AbstractPurchaseForm;import PurchaseModule.AbstractSaleForm;import PurchaseModule.AbstractStockForm;/* * * author 张超红
3、 * 采购订单类工厂 */public class PurchaseFactory implements AbstractFactory public PurchaseFactory() / TODO 自动生成的构造函数存根 /采购单据 Override public AbstractPurchaseForm createPurchase() / TODO 自动生成的方法存根 return new PurchaseForm(); /退货单据 public AbstractPurchaseForm createReturnGoodsForm() return new ReturnGoodsFor
4、m(); /实际支付单据 public AbstractPurchaseForm createActualllyBills() return new ActuallyBills(); /应该支付单据 public AbstractPurchaseForm createOrignalBills() return new OriginalBills(); /收货单 public AbstractPurchaseForm createReceiveGoodsBills() return new ReceiveGoodsForm(); public AbstractStockForm createSt
5、ock() / TODO 自动生成的方法存根 return null; public AbstractSaleForm createSale() / TODO 自动生成的方法存根 return null; package Factory;import entity.BankTransferForm;import entity.BorrowingForm;import entity.CashExpenseAccount;import PurchaseModule.AbstractPurchaseForm;import PurchaseModule.AbstractSaleForm;import
6、PurchaseModule.AbstractStockForm;public class SaleFactory implements AbstractFactory public SaleFactory() / TODO 自动生成的构造函数存根 Override public AbstractPurchaseForm createPurchase() / TODO 自动生成的方法存根 return null; public AbstractStockForm createStock() / TODO 自动生成的方法存根 return null; /现金支付销售 public Abstrac
7、tSaleForm createSale() / TODO 自动生成的方法存根 return new CashExpenseAccount(); /借款单据销售 public AbstractSaleForm createBorrowingForm() return new BorrowingForm(); /银行转账销售 public AbstractSaleForm createBankTransffer() return new BankTransferForm(); package Factory;import entity.StockOutForm;import entity.Sto
8、ckRntryForm;import PurchaseModule.AbstractPurchaseForm;import PurchaseModule.AbstractSaleForm;import PurchaseModule.AbstractStockForm;public class StockFactory implements AbstractFactory public StockFactory() / TODO 自动生成的构造函数存根 Override public AbstractPurchaseForm createPurchase() / TODO 自动生成的方法存根 r
9、eturn null; /入库 public AbstractStockForm createStock() / TODO 自动生成的方法存根 return new StockRntryForm(); /出库 public AbstractStockForm OutStock() return new StockOutForm(); public AbstractSaleForm createSale() / TODO 自动生成的方法存根 return null; package PurchaseModule;/* * * author 张超红 * */public interface Abs
10、tractPurchaseForm extends Form void display();package PurchaseModule;public interface AbstractStockForm extends Form void display();package PurchaseModule;public interface AbstractSaleForm extends Form void display();package entity;import java.util.Collection;import java.util.Date;import PurchaseMod
11、ule.AbstractPurchaseForm;public class PurchaseForm implements AbstractPurchaseForm String form_no; Date date; String CreateFormPerson; String tax_items;/税目 Collection dataCollection;/导入单据 String data;/单据 public void add() System.out.println(添加单据.); public void delete() System.out.println(删除单据.); pub
12、lic void print() System.out.println(打印.); public void examine() System.out.println(审批.); public PurchaseForm() / TODO 自动生成的构造函数存根 Override public void display() / TODO 自动生成的方法存根 System.out.println(您的采购单据中的采购单如下.); package Util;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax
13、.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLUtil public static Object getBean() try System.out.println(正在从配置文件中读取数据.); / 创建DOM文档对象 DocumentBuilderFactory dFactory = DocumentBuilderFactory .newInstance(); Document
14、Builder builder = dFactory.newDocumentBuilder(); Document doc; doc = builder.parse(new File(config.xml); / 获取包含类名的文本节点 NodeList nl = doc.getElementsByTagName(className); Node classNode = nl.item(0).getFirstChild(); String cName = classNode.getNodeValue(); / 通过类名生成实例对象并将其返回 Class c = Class.forName(Fa
15、ctory.+cName); Object obj = c.newInstance(); System.out.println(=+obj); return obj; catch (Exception e) e.printStackTrace(); System.out.println(e.getMessage(); return null; package test;import PurchaseModule.AbstractPurchaseForm;import Util.XMLUtil;import entity.PurchaseForm;import Factory.AbstractFactory;public class test public static void main(String args) AbstractFactory factory; AbstractPurchaseForm purchase; factory=(AbstractFactory)XMLUtil.getBean(); purchase=factory.createPurchase(); purchase.display(); PurchaseFactory 实验讨论(效果分析):
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1