webpage
webpage copied to clipboard
Design Patterns
I think it would be interesting to have a tutorial on design patterns in Fortran.
Previously, I've written about the following patterns on Fortran Discourse:
- Bridge: https://fortran-lang.discourse.group/t/hiding-implementation-details-the-bridge-pattern/7833
- Prototype: https://fortran-lang.discourse.group/t/questions-about-derived-type-intrinsic-assignment/8340/17
- Type Erasure: https://fortran-lang.discourse.group/t/attempting-type-erasure-in-fortran/4402
- Strategy: https://fortran-lang.discourse.group/t/is-creating-nested-subroutines-functions-considered-good-practice-in-fortran/6545/21?u=ivanpribec
The book Scientific Software Design by @rouson , Xia and Xu, introduces the following patterns:
- Object
- Abstract Calculus (a great example can be found on Discourse too)
- Strategy and Surrogate
- Puppeteer
- Factory
There are other works too (although some are outdated with appearance of F2003 and later constructs):
- Decyk, V. K., & Gardner, H. J. (2008). Object-oriented design patterns in Fortran 90/95: mazev1, mazev2 and mazev3. Computer Physics Communications, 178(8), 611-620. https://doi.org/10.1016/j.cpc.2007.11.013
- Markus, A. (2008, November). Design patterns and Fortran 2003. In ACM SIGPLAN Fortran Forum (Vol. 27, No. 3, pp. 2-15). New York, NY, USA: ACM. https://doi.org/10.1145/1462614.1462615 (cc @arjenmarkus)
- Rouson, D. W., Xia, J., & Xu, X. (2010). Object construction and destruction design patterns in fortran 2003. Procedia Computer Science, 1(1), 1495-1504. https://doi.org/10.1016/j.cpc.2007.11.013
- Gorelik, A. M. (2004). Object-oriented programming in modern Fortran. Programming and Computer Software, 30, 173-179. https://doi.org/10.1023/B:PACS.0000029582.33766.ba
- Morris, K. (2015). Emulating Multiple Inheritance in Fortran 2003/2008. Scientific Programming, 2015(1), 126069. https://doi.org/10.1155/2015/126069