设计模式——外观设计模式(Facade)(门面模式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alionsss/article/details/87397492

代码:GitHub

外观设计模式(购房示例)

0. UML结构图

外观模式UML结构图

1. 购房示例Code

1.1 卖家

  • 人 - 接口
public interface Person {

    void consult();

}
  • 卖家 - 实现类
public class Seller implements Person {

    @Override
    public void consult() {
        System.out.println("Seller.consult 和卖家协商完房屋价格");
    }

}

1.2 银行

  • 银行 - 接口
public interface Bank {

    void signLoanAgreement();

    void payMoney();

}
  • 商业银行 - 实现类
public class CommercialBank implements Bank {

    @Override
    public void signLoanAgreement() {
        System.out.println("CommercialBank.loan 在商业银行签订贷款协议");
    }

    @Override
    public void payMoney() {
        System.out.println("CommercialBank.payMoney 商业银行放款");
    }

}

1.3 税务局

  • 税务局 - 接口
public interface TaxBureau {

    void payTax();

}
  • 重庆税务局 - 实现类
public class ChongqingTaxBureau implements TaxBureau {

    @Override
    public void payTax() {
        System.out.println("ChongqingTaxBureau.payTax 在重庆税务局交税");
    }

}

1.4 房地产经纪人

public class HouseAgent {

    public void purchaseHouse() {
        findGoodHouse();

        Seller seller = new Seller();
        seller.consult();

        CommercialBank commercialBank = new CommercialBank();
        commercialBank.signLoanAgreement();

        ChongqingTaxBureau chongqingTaxBureau = new ChongqingTaxBureau();
        chongqingTaxBureau.payTax();

        commercialBank.payMoney();

        over();
    }

    private void findGoodHouse() {
        System.out.println("HouseAgent.findGoodHouse 房产经纪人寻找到合适的房屋");
    }

    private void over() {
        System.out.println("HouseAgent.over 本次购房完成");
    }

}

2. 购房示例Test

public class FacadeTest {

    public static void main(String[] args) {
        // 只用关心HouseAgent类,不用管其他类
        HouseAgent houseAgent = new HouseAgent();
        houseAgent.purchaseHouse();
    }

}

猜你喜欢

转载自blog.csdn.net/alionsss/article/details/87397492
今日推荐