7,外观模式

(七)外观模式

外观模式(Facade Pattern)指通过一个统一的接口,用来访问子系统中的一群接口。这样可以将一系列复杂的模块通过一个统一的窗口向外提供服务。

1,外观模式设计原则

1,外观角色(Facade):系统对外提供的统一接口。

2,子系统角色(SubSystem):子系统,

7,外观模式_第1张图片

2,简单例子

以积分兑换商品为例子,该行为将有3个服务,积分、支付、物流,现通过统一商品服务入口使用外观模式管理。

public class Gift {
     
    private String name;
    public Gift(String name){
     
        this.name = name;
    }
    public String getName(){
     
        return name;
    }
}
public class QualifyService {
     
    public boolean isAvailable(Gift gift){
     
        System.out.println(gift.getName()+"成功积**分");
        return true;
    }
}
public class PaymentService {
     
    public boolean pay(Gift gift){
     
        System.out.println(gift.getName()+"支付成功");
        return true;
    }
}
public class ShippingService {
     
    public boolean delivery(Gift gift){
     
        System.out.println(gift.getName()+"发货成功");
        return true;
    }
}
public class GiftService {
     
    private QualifyService qualifyService = new QualifyService();
    private PaymentService paymentService = new PaymentService();
    private ShippingService shippingService = new ShippingService();

    //流程:积分-支付-发货
    public void exchange(Gift gift){
     
        if(qualifyService.isAvailable(gift)){
     
            if(paymentService.pay(gift)){
     
                shippingService.delivery(gift);
            }
        }
    }
}
public class Client {
     
    public static void main(String[] args) {
     
        Gift gift = new Gift("《设计模式》");
        GiftService giftService = new GiftService();
        giftService.exchange(gift);
    }
}
7,外观模式_第2张图片

3,外观模式点评

满足最少知道原则,通过封装服务,简化调用过程,减少系统耦合。但是扩展子系统时可能有问题,违背开闭原则。

你可能感兴趣的:(设计模式学习,设计模式)