外观模式是一种比较简单的模式,即使从来没听说过这种模式,也可能在实际工作中经常使用它。它旨在为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
比如X系统有ABC三个独立的接口,外部系统Y要求再开一个接口,需要以特定逻辑整合ABC的功能,并添加功能D,并且还需要屏蔽掉某些返回的字段,其实就是在使用facade模式。
package facade;
public class Buyer {
public void buy() {
System.out.println("买鱼");
}
}
package facade;
public class Washer {
public void wash() {
System.out.println("洗鱼");
}
}
package facade;
public class Cooker {
public void cook() {
System.out.println("红烧鱼");
}
}
package facade;
public class Restaurant {
Buyer buyer;
Washer washer;
Cooker cooker;
public Restaurant() {
this.buyer=new Buyer();
this.washer=new Washer();
this.cooker=new Cooker();
}
public void getOrder() {
System.out.println("接单做一个红烧鱼");
buyer.buy();
washer.wash();
cooker.cook();
}
}
package facade;
public class Client {
public static void main(String[] args) {
Restaurant restaurant=new Restaurant();
restaurant.getOrder();
}
}
打印结果:
接单做一个红烧鱼
买鱼
洗鱼
红烧鱼
小结:
1.外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这种做法隐藏了系统的复杂性,降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。