My Factory object gets instantiated during application startup and is referenced in the application object. So, to create a new object, such as what you want:
loSafety = goApp.oFactory.Instantiate("SetResetOnOff","SAFETY")
>Hey all
>
>Assuming we have a need to instantiate an object.
>
>SET CLASSLIB TO xxfwutil.vcx
>loSafety = CreateObject("cusPushPopOnOff","SAFETY")
>
>This code is too tightly coupled to the class. If I subclass that class or rearrange the vcxs, I'm in for major reworking.
>
>A factory object is a solution.
>
>loSafety = CreateObject(oFactory.GetClassName("SetResetOnOff"),"SAFETY")
>
>First problem: oFactory must have been instantiated someplace, probably with a segment like:
>
>PUBLIC oFactory
>set classlib to blah.vcx
>oFactory = Createobject("myfactory")
>
>It seems preferable to have a single table for the factory.
>
>I suppose I have a few choices:
>1 - If the application has a table, the factory class could be specified there.
>
>2 - I could have a UDF that instantiated the factory by looking in the same table. That seems like redundant code.
>
>3 - How about the factory object calls that same UDF?
>
>PUBLIC oFactory
>oFactory = CreateObject(UDFGetClassName("Factory"))
>.
>.
>.
>loSafety = oFactory.GetClassName("SetResetOnOff"),"SAFETY")
>
>and inside GetClassName...
>
>lparameters tcClassName
>lcClassName = UDFGetClassName(m.tcClassName)
>
>Any body see anything wrong with that?
>
>Thanks
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer