外观模式(Facade pattern),用户操作不同的子系统,要解决用户与子系统的高耦合度,则使用此模式,增加一个用户操作系统,用户可通过此系统,操作到其他子系统,从而降低用户与子系统的耦合。
例如顾客要买肉,水果,用品。顾客一与顾客二买的东西有些一样,有些不一样。
子系统:
public class Fruit {
public String apple;
public String pear;
}
水果
public class Meat {
public String fish;
public String chicken;
}
肉
public class Things {
public String pot;
public String bowl;
}
用品。
如果不使用外观模式
顾客一买水果中的苹果,肉食的鱼
public class ClientA {
public void buy(){
Fruit f = new Fruit();
f.apple="1";
Meat m = new Meat();
m.chicken="2";
}
}
顾客二买水果中的梨,用品中的盆
public class ClientB {
public void buy(){
Fruit f = new Fruit();
f.pear="3";
Things t = new Things();
t.pot="2";
}
}
这样可以看出顾客类,直接在操作子系统。
如果使用外观模式,可以提供一个商场,顾客可以去商场买。
public class Shop {
Fruit f = new Fruit();
Things t = new Things();
Meat m = new Meat();
}
顾客可从这里去买自己想要的。
public class ClientC {
public void buy(){
Shop s = new Shop();
s.f.apple="1";
s.m.chicken="2";
s.t.pot="3";
}
}
这里不难看出此模式重要作用也是解耦