版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alionsss/article/details/87397492
代码:GitHub |
---|
外观设计模式(购房示例)
0. 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();
}
}