外观模式(Facade)
Façade类是把各个子系统的接口做了进一步抽象,让客户调用,客户只能和façade交互,不能直接和子系统交互。
1.关系图:
2.优点
(1)松散耦合:客户端和子系统之间解耦,子系统的内部模块更容易扩展和维护
(2)简单易用,客户端根本不知道子系统内部的实现构成,也无需关心
(3)更好的划分访问层次,子系统将用于外部访问的功能集中于façade中,在客户端的使用中,很好的隐藏了子系统的内部细节
3.代码
public class Client {
Facade facade ;
public Client(Facade facade)
{
this.facade=facade;
}
public void function()
{
facade.operation1();
System.out.println("===================");
facade.operation2();
}
}
public class Facade {
ChildSystem1 child1;
ChildSystem2 child2;
public Facade()
{
child1 = new ChildSystem1();
child2 = new ChildSystem2();
}
public void operation1()
{
child1.operation1();
child2.operation2();
}
public void operation2()
{
child1.operation2();
child2.operation1();
}
//....可以多种组合
}
public class ChildSystem1 {
public void operation1()
{
System.out.println("ChildSystem1:operation1");
}
public void operation2()
{
System.out.println("ChildSystem1:operation2");
}
}
public class ChildSystem2 {
public void operation1()
{
System.out.println("ChildSystem2:operation1");
}
public void operation2()
{
System.out.println("ChildSystem2:operation2");
}
}