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

代码: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();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值