中介者模式 电商 示例
时间: 2023-10-29 12:07:16 浏览: 41
中介者模式是一种行为型设计模式,它允许多个对象之间通过中介对象进行通信和协作,而不是直接相互引用。在电商领域中,中介者模式可以用来协调买家、卖家、库存管理者和物流公司之间的交互。
在一个电商平台中,买家需要与卖家达成交易,同时库存管理者需要知道哪些商品需要补充库存,物流公司需要知道哪些商品需要配送。传统的设计方法是让每个对象直接引用其他对象,这会导致高耦合度、难以扩展和维护。
使用中介者模式,我们可以引入一个中介者对象来协调这些对象之间的通信和协作。中介者对象可以提供以下功能:
1. 提供一个接口让买家和卖家进行交易,如下单、付款、发货等。这样买家和卖家不需要直接引用对方,只需要与中介者对象通信即可。
2. 提供一个接口让库存管理者和物流公司获取需要补充库存和配送的商品信息。这样库存管理者和物流公司也不需要直接引用其他对象,只需要与中介者对象通信即可。
下面是一个简单的电商平台中介者模式的示例代码:
```java
// 中介者接口
public interface Mediator {
void buy(Item item, int quantity);
void sell(Item item, int quantity);
void checkStock();
void ship(Item item, int quantity);
}
// 电商平台中介者对象
public class EcommerceMediator implements Mediator {
private Map<Item, Integer> stock = new HashMap<>();
@Override
public void buy(Item item, int quantity) {
if (stock.getOrDefault(item, 0) >= quantity) {
System.out.println("买家购买了 " + quantity + " 个 " + item.getName() + "。");
stock.put(item, stock.get(item) - quantity);
} else {
System.out.println(item.getName() + " 库存不足,无法购买。");
}
}
@Override
public void sell(Item item, int quantity) {
System.out.println("卖家出售了 " + quantity + " 个 " + item.getName() + "。");
stock.put(item, stock.getOrDefault(item, 0) + quantity);
}
@Override
public void checkStock() {
System.out.println("当前库存:");
for (Map.Entry<Item, Integer> entry : stock.entrySet()) {
System.out.println(entry.getKey().getName() + ":" + entry.getValue());
}
}
@Override
public void ship(Item item, int quantity) {
System.out.println(item.getName() + " 已发货,数量:" + quantity);
}
}
// 商品类
public class Item {
private String name;
private double price;
public Item(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
// 买家类
public class Buyer {
private Mediator mediator;
public Buyer(Mediator mediator) {
this.mediator = mediator;
}
public void buy(Item item, int quantity) {
mediator.buy(item, quantity);
}
}
// 卖家类
public class Seller {
private Mediator mediator;
public Seller(Mediator mediator) {
this.mediator = mediator;
}
public void sell(Item item, int quantity) {
mediator.sell(item, quantity);
}
}
// 库存管理者类
public class StockManager {
private Mediator mediator;
public StockManager(Mediator mediator) {
this.mediator = mediator;
}
public void checkStock() {
mediator.checkStock();
}
}
// 物流公司类
public class LogisticsCompany {
private Mediator mediator;
public LogisticsCompany(Mediator mediator) {
this.mediator = mediator;
}
public void ship(Item item, int quantity) {
mediator.ship(item, quantity);
}
}
// 示例代码
public static void main(String[] args) {
Mediator mediator = new EcommerceMediator();
Item item = new Item("手机", 999.99);
Buyer buyer = new Buyer(mediator);
Seller seller = new Seller(mediator);
StockManager stockManager = new StockManager(mediator);
LogisticsCompany logisticsCompany = new LogisticsCompany(mediator);
seller.sell(item, 10);
stockManager.checkStock();
buyer.buy(item, 3);
stockManager.checkStock();
logisticsCompany.ship(item, 3);
}
```
在上面的示例代码中,我们创建了一个电商平台中介者对象 `EcommerceMediator`,并创建了买家、卖家、库存管理者和物流公司等对象,并将它们的中介者都设置为 `EcommerceMediator`。通过中介者对象,这些对象之间可以进行通信和协作,而不需要直接引用对方,从而实现了低耦合度、易扩展和维护的设计。