生活中,我们买菜要去菜市场,买水果要去水果店,买零食要去零食店。这需要去很多地方。这时超市(外观模式)出现了,在超市里你可以买到菜、水果、零食
定义:外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个统一的接口。客户端不用关心内部子系统的具体细节,内部子系统的改变而不影响客户端。这样会大大降低应用程序的耦合度,提高了程序的可维护性
外观模式是迪米特法则的典型应用,优点如下:
缺点:
适用场景:
结构:
实现:
public class FacadeTest {
public static void main(String[] args) {
SuperMarket superMarket = new SuperMarket();
superMarket.buyGood();
}
}
// 外观角色: 超市
class SuperMarket {
private VegetableArea vegetableArea = new VegetableArea();
private FruitArea fruitArea = new FruitArea();
public void buyGood() {
vegetableArea.buyVegetable();
fruitArea.buyFruit();
}
}
// 子系统角色:买菜区域
class VegetableArea {
public void buyVegetable() {
System.out.println("在买菜区域买菜");
}
}
// 子系统角色:水果区域
class FruitArea {
public void buyFruit() {
System.out.println("在水果区域买水果");
}
}
运行程序,结果如下:
在买菜区域买菜
在水果区域买水果