简介:
外观模式也交门面模式,是使用最频繁的一种结构型模式,常体为面向对象的封装特性。这种模式是对外提供一个统一一致的接口来调用子模块,使得子模块更容易使用。
实现及测试如下
/**
* 酒店实体类,包含各种属性
* @author dedu
*
*/
public class Hotel {
private Brand brand;
private String name;
public Brand getBrand() {
return brand;
}
public void setBrand(Brand brand) {
this.brand = brand;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Hotel(Brand brand, String name) {
super();
this.brand = brand;
this.name = name;
}
@Override
public String toString() {
return "品牌为" + brand + ", 名字叫" + name;
}
}
/**
* 酒店品牌属性
* @author dedu
*
*/
public class Brand {
private String name;
public Brand(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
/**
* 酒店子功能的外观接口,定义各个功能的具体实现并提供统一接口
* @author dedu
*
*/
public class HotelFacade {
private Hotel hotel;
private Brand brand;
public HotelFacade() {
brand = new Brand("携程");
hotel = new Hotel(brand, "五星级大酒店");
}
public void bookHotel() {
System.out.println("已预订酒店:"+hotel);
}
}
测试
public static void main(String[] args) {
//没有使用外观模式时,任何细节都需要客户端处理
Brand brand = new Brand("亚朵");
Hotel hotel = new Hotel(brand, "国宾大酒店");
System.out.println("已预订酒店:"+hotel);
//使用此模式后,客户端只需调用统一接口即可
HotelFacade hotelFacade = new HotelFacade();
hotelFacade.bookHotel();
}