Skip to content

外观模式

意图

为子系统中的一组接口提供统一的高层接口,让子系统更易使用。客户端只与外观交互,降低耦合。

类图

Java 示例

java
public class OrderService {
    private final InventoryService inventory = new InventoryService();
    private final PaymentService payment = new PaymentService();
    private final ShippingService shipping = new ShippingService();

    public void placeOrder(String sku, int qty, String addr) {
        inventory.reserve(sku, qty);
        payment.charge(sku, qty);
        shipping.ship(sku, qty, addr);
    }
}

class InventoryService {
    void reserve(String sku, int qty) { System.out.println("reserve " + sku); }
}
class PaymentService {
    void charge(String sku, int qty) { System.out.println("pay"); }
}
class ShippingService {
    void ship(String sku, int qty, String addr) { System.out.println("ship to " + addr); }
}

Spring 中常把多个 DAO/Service 封装在一个 ApplicationService 即外观思想。

下一节:享元模式