我正在研究设计模式,以提高我的编程技能。现在,我正在探索立面设计模式。

我可能会感到困惑,但是,例如: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/

10-09 13:20