外观模式也叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。就是对外提供了一个门面,里边封装了多个接口的聚合数据。就像我们买基金,都是由基金经理帮我们操作具体到对应的股票,债券等等。
1.自己买股票的情形
具体代码如下:
public class Realty1 {
public void sell() {
System.out.println("地产1卖出");
}
public void buy() {
System.out.println("地产1买入");
}
}
public class NationalDebt1 {
public void sell() {
System.out.println("国债1卖出");
}
public void buy() {
System.out.println("国债1买入");
}
}
public class Stock1 {
public void sell() {
System.out.println("股票1卖出");
}
public void buy() {
System.out.println("股票1买入");
}
}
public class Stock2 {
public void sell() {
System.out.println("股票2卖出");
}
public void buy() {
System.out.println("股票2买入");
}
}
public class Stock3 {
public void sell() {
System.out.println("股票3卖出");
}
public void buy() {
System.out.println("股票3买入");
}
}
亲力亲为版测试:
public class TestOld {
public static void main(String[] args) {
Stock1 stock1 = new Stock1();
Stock2 stock2 = new Stock2();
Stock3 stock3 = new Stock3();
NationalDebt1 nationalDebt1 = new NationalDebt1();
Realty1 realty1 = new Realty1();
stock1.sell();
stock1.buy();
stock2.sell();
stock2.buy();
stock3.sell();
stock3.buy();
nationalDebt1.sell();
nationalDebt1.buy();
realty1.sell();
realty1.buy();
}
result:
2.基金经理接入后的门面模式
基金门面:
public class FoundFacade {
private Stock1 stock1;
private Stock2 stock2;
private Stock3 stock3;
private NationalDebt1 nationalDebt1;
private Realty1 realty1;
public FoundFacade() {
this.stock1 = new Stock1();
this.stock2 = new Stock2();
this.stock3 = new Stock3();;
this.nationalDebt1 = new NationalDebt1();
this.realty1 = new Realty1();
}
public void sell(){
stock1.sell();
stock2.sell();
stock3.sell();
nationalDebt1.sell();
realty1.sell();
}
public void buy(){
stock1.buy();
stock2.buy();
stock3.buy();
nationalDebt1.buy();
realty1.buy();
}
}
测试:
public class TestNew {
public static void main(String[] args) {
FoundFacade facade = new FoundFacade();
facade.buy();
facade.sell();
}
}
result:



