設(shè)計(jì)模式-外觀(Facade)模式

主要角色

  • 外觀

職責(zé)

有點(diǎn)像裝飾器模式和適配器模式的意思。外觀模式的作用是對外提供一個(gè)新的接口,而業(yè)務(wù)邏輯則使用已有的代碼。

類圖

類關(guān)系示意圖

代碼

public class GiftExchangeService {
    private QualifyService qualifyService = new QualifyService();
    private PointsPaymentService pointsPaymentService = new PointsPaymentService();
    private ShippingService shippingService = new ShippingService();

    public void giftExchange(PointsGift pointsGift){
        if(qualifyService.isAvailable(pointsGift)){
            //資格校驗(yàn)通過
            if(pointsPaymentService.pay(pointsGift)){
                //如果支付積分成功
                String shippingOrderNo = shippingService.shipGift(pointsGift);
                System.out.println("物流系統(tǒng)下單成功,訂單號是:"+shippingOrderNo);
            }
        }
    }

}
---
public class PointsPaymentService {
    public boolean pay(PointsGift pointsGift){
        //扣減積分
        System.out.println("支付"+pointsGift.getName()+" 積分成功");
        return true;
    }
}
---
public class QualifyService {
    public boolean isAvailable(PointsGift pointsGift){
        System.out.println("校驗(yàn)"+pointsGift.getName()+" 積分資格通過,庫存通過");
        return true;
    }
}
---
public class ShippingService {
    public String shipGift(PointsGift pointsGift){
        //物流系統(tǒng)的對接邏輯
        System.out.println(pointsGift.getName()+"進(jìn)入物流系統(tǒng)");
        String shippingOrderNo = "666";
        return shippingOrderNo;
    }
}
---
public class PointsGift {
    private String name;

    public PointsGift(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

使用

public class Test {
    public static void main(String[] args) {
        PointsGift pointsGift = new PointsGift("T恤");
        GiftExchangeService giftExchangeService = new GiftExchangeService();
        giftExchangeService.giftExchange(pointsGift);
    }
}

技巧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容