diff options
Diffstat (limited to 'meowpp/oo')
-rw-r--r-- | meowpp/oo/Register_Implement.h | 20 | ||||
-rw-r--r-- | meowpp/oo/Register_Implement.hpp | 5 |
2 files changed, 22 insertions, 3 deletions
diff --git a/meowpp/oo/Register_Implement.h b/meowpp/oo/Register_Implement.h index e46f86c..dd496fa 100644 --- a/meowpp/oo/Register_Implement.h +++ b/meowpp/oo/Register_Implement.h @@ -26,6 +26,26 @@ namespace meow{ virtual ImplementInterface<T>* getImplement(T const& identify); virtual ~RegisterInterface(){ } }; + /******************************************************************* + @asciidoc + === meow:: *ImplementInterface/RegisterInterface* (C++ Class) + .Description + Assume there is a problem which can be solved by different algorithms. + Then you can write multiple classes to approach this problem. + + Now if you want to decide which algorithm to use in runtime, you can just + approach this case by a simple way: + + * Let all the problem-solving classes inherit from + `class ImplementInterface<T>` , and call the constructure with giving + `identify` (type `T` ) . + * Create an object, type `RegisterInterface<T>` , and register all your + implement class to it by call `regImplement(pointer to the class)`. + * Select which implement class you want by call `getImplement(identify)` , + which will return the pointer to the corresponding class. + + ''' + @asciidoc- + ******************************************************************/ } #include "Register_Implement.hpp" diff --git a/meowpp/oo/Register_Implement.hpp b/meowpp/oo/Register_Implement.hpp index 523f266..34d9129 100644 --- a/meowpp/oo/Register_Implement.hpp +++ b/meowpp/oo/Register_Implement.hpp @@ -13,9 +13,8 @@ namespace meow{ return true; } template<class T> - inline ImplementInterface<T>* RegisterInterface<T>::getImplement( - T const& identify - ){ + inline ImplementInterface<T>* + RegisterInterface<T>::getImplement(T const& identify){ if(implements.find(identify) == implements.end()){ return NULL; } |