According to [7], the adapter pattern is used to adapt the
interface of a class into another interface which clients expect. In order
to be able to use Jim Costigan's widgets, they had to conform to the
CaveTool
abstraction. This was accomplished by implementing each cave tool in terms
of an instance of one of Jim Costigan's widgets. For instance, one of the concrete
subclasses of CaveTool
is SliderTool
. A SliderTool
instantiates a
slider
object (a Jim Costigan widget). The SliderTool
conforms to
the CaveTool
interface, but it delegates all the work to the slider
object.
The methods in SliderTool
simply call methods in slider
.
The desktop widgets also make use of the Adapter pattern. X/Motif widgets are
"adapted" to the DesktopTool
interface which is a subclass of Tool
.
As a result, the developer can program for the most part using the Tool
interface.
This allows the code to be portable across the CAVE and the desktop. However, within
the interface mediator, handles to either DesktopTool
s and CaveTool
s
are kept. As mentioned in the last chapter, this is necessary in order to do some
of the platform specific operations for these widgets.
Figure 6.5: Partial diagram of Adapter pattern. The client (pjrWidget) expects a Tool object. The adapter
(SliderTool) defines a SliderTool that conforms to the Tool interface and is implemented in terms
of a slider object.