分析&回答
外观模式为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这些子系统更加容易使用。
外观模式中,客户对各个具体的子系统是不了解的,所以对这些子系统进行了封装,对外只提供了用户所明白的单一而简单的接口,用户直接使用这个接口就可以完成操作,而不用去理睬具体的过程,而且子系统的变化不会影响到用户,这样就做到了信息隐蔽。
这就相当于新生接待员。新生对入学流程不清楚,但是接待员学长可是明白的。学生跟着接待员就可以把各个手续办理完毕了。可以说外观模式封装了细节。
实例代码讲解:
/**
* 高层的统一接口,封装了子系统繁杂的接口。
*/
public class Facade{
private SubSystemOne one;
private SubSystemTwo two;
private SubSystemThree three;
public Facade(){
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
}
public void MethodA(){
one.MethodOne();
two.MethodTwo();
}
public void MethodB(){
one.MethodOne();
three.MethodThree();
}
}
/**
* 子系统One
*/
public class SubSystemOne{
public void MethodOne(){
Console.Write("我是One");
}
}
/**
* 子系统Two
*/
public class SubSystemTwo{
public void MethodTwo(){
Console.Write("我是Two");
}
}
/**
* 子系统Three
*/
public class SubSystemThree{
public void MethodThree(){
Console.Write("我是Three");
}
}
/**
* client端
* @param args
*/
static void Main(string[] args)
{
Facade f1 = new Facade();
f1.MethodA();
Facade f2 = new Facade();
f2.MethodB();
Console.ReadLine();
}
反思&扩展
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!