ABSTRACT

The Abstract Things concept plays an important role in large-scale systems design. Software components that use other components, possibly developed by third parties, are often designed against an abstract definition of those components rather than against any concrete implementation. The realization of those abstract interfaces varies depending on the programming language involved. The Adapter design pattern is an example of a system-level practice that has the same intention as Abstract Things. For example, an application that uses Bluetooth devices will likely use its own adapter as the primary interface to the Bluetooth functionality in order to shield itself from the variability in Bluetooth APIs; a 3D game that supports physics will likely want to use its own adapter to be able to use different physics engines.