This is Simple query related to Factory Design Pattern... Have a look at the Auto Registration of Factory Design pattern..
:) Prem On Fri, Sep 23, 2011 at 3:02 PM, algo geek <geeka...@gmail.com> wrote: > You have a library provided by the vendor. All you have is header files and > library files. > Library contains the class Shape and there is whole hierarchy tree (i mean > classes which derive from this base class). > Now you want to add some function "getArea" (not originally present in the > class or any of its derived class) in the class "Shape" , you dont have the > source code. > > Using this library, you have written a lot of code. Now you have to make > some changes so that, any object of Shape class (or its derived class) will > be able to call this function. > With your strategy, you should be able to override the definition of this > function in the derived class. > > I think it is related to design patterns, not sure. > I gave the solution that : we will use MyShape , and use composition. i.e. > will create the object of Shape class inside this "NewShape" class and > interface can be made. Internally, we can call the functions of "Shape" > object. That will work fine. But we have to do this for the whole design > hierarchy. Secondly, if there is some changes by the vendor in future in the > library, i have to change my new design tree. > e.g. > class Shape { > public : void draw(); > void clear(); > } > class Circle : public Shape{ > public : void draw(); > void clear(); > } > class Rectangle: public Shape{ > public : void draw(); > void clear(); > } > > > class NewShape{ > private Shape * obj; > public : void draw(){ obj->draw(); } > void clear() { obj->clear(); } > int getArear(){ > //implementtation of getArea function > } > } > > class NewCircle : NewShape{ > public : void draw(){ (Circle*)obj->draw(); } > void clear() { (Circle*)obj->clear(); } > int getArear(){ > //implementtation of getArea function specific to > circle > } > } > class NewRectangle : NewShape{ > public : void draw(){ (Rectangle*)obj->draw(); } > void clear() { (Rctangle*)obj->clear(); } > int getArear(){ > //implementtation of getArea function > } > } > > I know this solution is not good.. please provide a better approach for > this. > Please let me knw if anything is not clear. > > > > > Thanks in advance. > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.