我阅读了许多有关GoF的OOP设计模式的主题,但是我不确定“客户”的概念。那是什么我们如何在我们的应用程序中实现它。感谢!

最佳答案

在gof书中,客户端是使用模式中的类的代码或类。

例如,根据动机下的抽象工厂模式:

考虑一个支持多种外观标准的用户界面工具包,例如Motif和Presentation Manager。不同的外观为用户界面“小部件”(如滚动条,窗口和按钮)定义了不同的外观和行为。为了可以跨外观标准进行移植,应用程序不应为特定的外观硬编码其小部件。实例化整个应用程序中特定于外观的小部件类使以后很难更改外观。

我们可以通过定义一个抽象的WidgetFactory类来解决此问题,该类声明一个用于创建每种基本小部件的接口(interface)。每种小部件都有一个抽象类,而具体的子类为特定的外观标准实现小部件。 WidgetFactory的界面具有一个操作,该操作为每个抽象小部件类返回一个新的小部件对象。客户端调用这些操作来获取小部件实例,但是客户端并不知道他们正在使用的具体类。因此,客户可以保持独立于主流外观的感觉。

每个外观标准都有一个WidgetFactory的具体子类。每个子类都实现操作以创建外观合适的窗口小部件。例如,MotifWidgetFactory上的CreateScrollBar操作实例化并返回Motif滚动条,而PMWidgetFactory上的相应操作返回Presentation Manager的滚动条。客户端仅通过WidgetFactory接口(interface)创建窗口小部件,并且不了解为特定外观实现窗口小部件的类。换句话说,客户端只需提交由抽象类(而不是特定的具体类)定义的接口(interface)即可。

WidgetFactory还强制具体的窗口小部件类之间具有依赖性。 Motif滚动条应与Motif按钮和Motif文本编辑器一起使用,并且该约束是由于使用MotifWidgetFactory而自动实现的。

关于oop - OOP设计模式中的"Client"概念?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15847806/

10-12 23:12