Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
Oct 16, 1998

Function Wrappers - The First Step toward Gaining OO Advantages

In large-scale projects different teams use API functions developed by another team or a third-party vendor. For example:
 
int retrievePerson (int key, Person& recordToBefilled); // original version; used by all teams
A problem can arise when the interface of an API is modified by the implementer; all of its users have to track down every reference to it, and modify the code accordingly.
 
int retrievePerson (const char * key, Person& recordToBefilled); // string key instead of int
To avoid such dependencies, you should wrap the API by a wrapper, rather than call it directly. A wrapper is a simple function that calls the third party's API and returns its result. (Don't worry about the overhead of an additional function call—most compilers will inline it anyway):
 
int WrapRetrievePerson(int key, Person& recordToBefilled) 
{
retrurn retrievePerson (int key, Person& recordToBefilled); // call the API 
} 
This is very similar to "getters" and "setters" in a C++ class. A wrapper provides a stable interface to an API that is vulnerable to modifications. When an API's interface is changed, only the implementation of its corresponding wrapper has to be modified accordingly, without affecting the programs that call the wrapper:
 
int WrapRetrievePerson(int key, Person& recordToBefilled) //wrapper interface remains intact

{	//wrapper's implementation modified according to API's modification
char strkey[100];
itoa (key, strkey); //convert ant int to its corresponding  decimal string
return retrievePerson (strkey, Person& recordToBefilled); 
}
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap