How can you get Implementation-InheritanceInVbClassic, when the VbClassic language does not directly support it?
The following are a few ideas on how to do it.
(Inheritance is an issue for some refactorings you'd want to do if you were RefactoringInVbClassic.)
2004 Note: This page is relevant to VbClassic only, as VbDotNet is a different animal all together
VbIiByDelegation?:
-
- Child class holds an instance of the base class as a private member variable, and forwards calls to it. Child class must implement the base class interface and all its methods, even if they do nothing but delegate.
VbIiByPreprocessingSource:
-
- Use an external tool to modify the source code, copying and generating code where needed.
VbIiByCallingChildren:
-
- Base class calls child classes to see if they implement the method. Relies on run-time method lookup.
VbIiByStatusFlag?: (...or VbIiSimulationWithTypeCode??)
-
- Base class checks internal status flag to determine which child class it should behave as. MartinFowler mentions this simple approach in AnalysisPatterns.
VbStandardModuleAsBaseClass?
-
- All the methods you'd normally put in a base class, put them instead in a StandardModule?. Child classes "inherit" these methods by calling (delegating to) them. (It's tedious and repetitive, but I've done it. Works well with code generation.)
VisualBasicDotNet
-
- Upgrade to VisualBasic version 7.
Is VbIiByStatusFlag? a strategy of "implementing a hierarchy of classes" by collapsing all methods up into the base class and using switch/case statements, based on a type code, to select the appropriate behavior for each method?
(...just asking; I don't happen to have that book.)
-- JeffGrigg
Of course, with each of these artifact, you must abandon the OpenClosedPrinciple. VB is ObjectTinted?, not ObjectOriented.
Discussions in Newsgroups regarding use of Implements
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=Ot4zL6ZFEHA.2956%40tk2msftngp13.phx.gbl&rnum=1&prev=/groups%3Fsafe%3Dimages%26ie%3DUTF-8%26oe%3DUTF-8%26as_ugroup%3Dmicrosoft.public.vb.general.discussion%26as_usubject%3DImplements%26as_drrb%3Db%26as_mind%3D12%26as_minm%3D3%26as_miny%3D2004%26as_maxd%3D31%26as_maxm%3D3%26as_maxy%3D2004%26lr%3D%26hl%3Den
The above has dialog as early as 1999, and as recent as 2004. A good Microsoft article cited within is located at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvb600/html/ifacebased.asp
The article is taken from book Programming Distributed Applications with COM & Microsoft Visual Basic (ISBN 1-57231-961-5 )
CategoryVbClassic