Clear questions and runnable code get the best and fastest answer |
|
PerlMonks |
Re^5: Factory classes in Perlby LanX (Saint) |
on Jan 12, 2021 at 13:17 UTC ( [id://11126795]=note: print w/replies, xml ) | Need Help?? |
> Code that will use a module to do amazing things if it's installed, but will muddle through with some lesser code path if that dependency is missing or unavailable on the system" Do you know Term::ReadLine ?
Perl interface to various readline packages. If no real package is found, substitutes stubs instead of basic functions. I have to say it was very confusing for me to see features of the debugger documented ... And they simply don't work, because the right backend is missing or can't be installed. Well it still is confusing. But overload has a good example for fall backs. If ".=" isn't overloaded it will fall back to the overload for "." and this will fall back to "" for stringification. So it's possible to work with lesser code. > > Part of the problem here is that most of the literature for factory classes will be written with JAVA like languages in mind. Perl is far more TIMTOWTDI. > I agree. Although I'm far from an expert on the theory, I think Dependency inversion principle is probably an interesting and relevant read. Well I tried to read thru all those https://en.wikipedia.org/wiki/Creational_pattern and I'm a bit lost. I don't think they translate well to Perl, that's mainly "Meta Programming" in Perl. It's like explaining English with alien grammar. How do you explain Latin's Locative case to people who already struggle to use "whom" even after "to" or "for" in accusative or dative cases (that's direct and indirect object, folks ;). So without really deeply knowing Java and UML I can't fully decipher it. ANYWAY I read the OP's example again, and it seems to explain how to write a test suite that adapts to an application with various "Deer" plugins. It's not up to the test suite to install the plugin it has to react to the given environment.
Cheers Rolf
In Section
Seekers of Perl Wisdom
|
|