Mike Yearwood
Toronto, Ontario, Canada
Information générale
Catégorie:
Programmation Orientée Object
Titre:
Factory Objects - practical application
Versions des environnements
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
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement