add Object Adapter

This commit is contained in:
Jakub Vojvoda
2016-09-14 23:11:29 +02:00
parent af3869d566
commit 8e3f112f6e
2 changed files with 72 additions and 2 deletions

69
adapter/ObjectAdapter.cpp Normal file
View File

@@ -0,0 +1,69 @@
/*
* C++ Design Patterns: Adapter (Object scope)
* Author: Jakub Vojvoda [github.com/JakubVojvoda]
* 2016
*
* Source code is licensed under MIT licence
* (for more details see LICENCE)
*
*/
#include <iostream>
/*
* Target
* defines specific interface that Client uses
*/
class Target {
public:
virtual void request() = 0;
// ...
};
/*
* Adaptee
* defines an existing interface that needs adapting and thanks
* to Adapter it will get calls that client makes on the Target
*
*/
class Adaptee {
public:
void specificRequest() {
std::cout << "specific request" << std::endl;
// ...
}
// ...
};
/*
* Adapter
* implements the Target interface and when it gets a method call it
* delegates the call to a Adaptee
*/
class Adapter : public Target {
public:
Adapter() : adaptee() {}
~Adapter() {
delete adaptee;
}
void request() {
adaptee->specificRequest();
// ...
}
// ...
private:
Adaptee *adaptee;
// ...
};
int main()
{
Target *t = new Adapter();
t->request();
return 0;
}

View File

@@ -1,8 +1,9 @@
## Adapter ## Adapter
Convert the interface of a class into another interface clients expect. Convert the interface of a class into another interface the clients expect.
Adapter lets classes work together that couldn't otherwise because of Adapter lets classes work together that couldn't otherwise because of
incompatible interfaces. incompatible interfaces, ie. allows to use a client with an incompatible
interface by an Adapter that does the conversion.
### When to use ### When to use