某单据管理系统中要求实现对采购、销售、库存的单据管理,系统的采购类的单据中有如采购单、退货单、销售单、退款单、入库单、出库单等,现使用抽象工厂方法设计模式设计该系统
时间: 2023-10-20 21:07:36 浏览: 377
抽象工厂方法设计模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
在本例中,我们可以创建一个抽象工厂类,名为AbstractDocumentFactory,该类定义了创建所有单据类所需的方法。然后,我们可以创建具体的工厂类,如PurchaseDocumentFactory、SalesDocumentFactory和InventoryDocumentFactory。
每个具体的工厂类都实现了AbstractDocumentFactory中定义的方法,并返回相应的单据类对象。例如,PurchaseDocumentFactory将创建PurchaseOrder、PurchaseReturn等单据类对象,而SalesDocumentFactory将创建SalesOrder、RefundOrder等单据类对象。
这样,我们就可以通过调用具体的工厂类来创建所需的单据类对象,而无需了解它们的具体实现。
以下是抽象工厂方法设计模式的示例代码:
```java
// 抽象工厂类
public abstract class AbstractDocumentFactory {
public abstract PurchaseOrder createPurchaseOrder();
public abstract PurchaseReturn createPurchaseReturn();
public abstract SalesOrder createSalesOrder();
public abstract RefundOrder createRefundOrder();
public abstract StockIn createStockIn();
public abstract StockOut createStockOut();
}
// 具体的工厂类
public class PurchaseDocumentFactory extends AbstractDocumentFactory {
public PurchaseOrder createPurchaseOrder() {
return new PurchaseOrder();
}
public PurchaseReturn createPurchaseReturn() {
return new PurchaseReturn();
}
public SalesOrder createSalesOrder() {
return null;
}
public RefundOrder createRefundOrder() {
return null;
}
public StockIn createStockIn() {
return new StockIn();
}
public StockOut createStockOut() {
return null;
}
}
public class SalesDocumentFactory extends AbstractDocumentFactory {
public PurchaseOrder createPurchaseOrder() {
return null;
}
public PurchaseReturn createPurchaseReturn() {
return null;
}
public SalesOrder createSalesOrder() {
return new SalesOrder();
}
public RefundOrder createRefundOrder() {
return new RefundOrder();
}
public StockIn createStockIn() {
return null;
}
public StockOut createStockOut() {
return null;
}
}
public class InventoryDocumentFactory extends AbstractDocumentFactory {
public PurchaseOrder createPurchaseOrder() {
return null;
}
public PurchaseReturn createPurchaseReturn() {
return null;
}
public SalesOrder createSalesOrder() {
return null;
}
public RefundOrder createRefundOrder() {
return null;
}
public StockIn createStockIn() {
return new StockIn();
}
public StockOut createStockOut() {
return new StockOut();
}
}
// 抽象单据类
public abstract class AbstractDocument {
// 公共属性和方法
}
// 具体单据类
public class PurchaseOrder extends AbstractDocument {
// 具体实现
}
public class PurchaseReturn extends AbstractDocument {
// 具体实现
}
public class SalesOrder extends AbstractDocument {
// 具体实现
}
public class RefundOrder extends AbstractDocument {
// 具体实现
}
public class StockIn extends AbstractDocument {
// 具体实现
}
public class StockOut extends AbstractDocument {
// 具体实现
}
// 应用示例
public class DocumentApplication {
public static void main(String[] args) {
// 创建采购单据工厂
AbstractDocumentFactory purchaseFactory = new PurchaseDocumentFactory();
// 创建采购订单
PurchaseOrder purchaseOrder = purchaseFactory.createPurchaseOrder();
// 创建入库单
StockIn stockIn = purchaseFactory.createStockIn();
// 创建销售单据工厂
AbstractDocumentFactory salesFactory = new SalesDocumentFactory();
// 创建销售订单
SalesOrder salesOrder = salesFactory.createSalesOrder();
// 创建退款单
RefundOrder refundOrder = salesFactory.createRefundOrder();
// 创建库存单据工厂
AbstractDocumentFactory inventoryFactory = new InventoryDocumentFactory();
// 创建出库单
StockOut stockOut = inventoryFactory.createStockOut();
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)