我正在研究设计模式,以提高我的编程技能。现在,我正在探索立面设计模式。
我可能会感到困惑,但是,例如:Scanner
是不是外观?
请注意,我并不是在问什么是Facade,而是试图确定Scanner是否是。
好吧,我声明了它,这样我就可以使用某些功能而无需联系复杂而又深层次的功能,对吗?
我宣布
Scanner sc = new Scanner(System.in);
所以我可以:
String x = sc.nextLine();
最佳答案
这是一个很好的类示例,它简化了API,并使之更清楚,更接近所使用的内容。当我们想在控制台应用程序InputStream
中从用户读取数据时,将很难使用。让我们看一下Facade模式的一些定义,并与Scanner
类匹配:
意图
为子系统中的一组接口提供统一的接口。
Facade定义了使子系统具有更高层次的接口
更容易使用。
用一个更简单的接口包装一个复杂的子系统。Scanner
类匹配以上两个点。
检查清单
为子系统标识一个更简单,统一的接口,或者
零件。
设计一个封装子系统的“包装器”类。
立面/包装器捕捉了建筑的复杂性和协作性
组件,并委托适当的方法。
客户仅使用(耦合到)该Facade。
考虑其他外观是否会增加价值。Scanner
类与以上所有点匹配。因此,我们可以将Scanner
视为InputStream
的外观。
关于java - Java的“扫描程序”方法与Facade GoF设计模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55618485/