Pattern Componentization: The Factory Example

  • Karine Arnout
  • Bertrand Meyer
Original Paper


Can Design Patterns be turned into reusable components? To help answer this question, we have performed a systematic study of the standard design patterns. One of the most interesting is Abstract Factory, for which we were indeed able to build a reusable component fulfilling the same needs as the original pattern. This article presents the component’s design and its lessons for the general issue of pattern componentization.


Design Pattern Reusable Component Original Pattern Abstract Factory Pattern Componentization 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Alexandrescu A (2001) Modern C++ design, generic programming and design patterns applied. Addison-Wesley, ReadingGoogle Scholar
  2. 2.
    Arnout K, Meyer B (2003) Finding Implicit Contracts in .NET Components. In: de Boer F, Bonsangue M, Graf S, de Roever WP (eds) Proceedings of FMCO 2002 (Ist international symposium on formal methods for components and objects, Leiden, The Netherlands, November 2002), LNCS vol 2852. Springer, Berlin Heidelberg New York, pp 285–318Google Scholar
  3. 3.
    Arnout K, Meyer B (2003) Uncoverring hidden contracts: the .NET example. IEEE Comput 36(11):48–55Google Scholar
  4. 4.
    Arnout K, Bezault E (2004) How to get a Singleton in Eiffel? In: Proceedings of TOOLS USA 2003 (44th international conference on the technology of object-oriented languages and systems), Santa Barbara, CA, September 2003, in J Object Technol 3(4), 75–95. Available (March 2006) at Scholar
  5. 5.
    Arnout K (2004) From patterns to components, PhD thesis, ETH Zurich. Available (2006) at people/arnout/patterns/Google Scholar
  6. 6.
    Arslan V, Nienaltowski P, Arnout K (2003) An object- oriented library for event-driven design. In: Böszörmenyi L, Schojer P (eds) Proceedings of JMLC (joint modular languages conference), Klagenfurt, Austria, August 2003. LNCS 2789. Springer, Berlin Heidelberg New York, pp 174–183Google Scholar
  7. 7.
    Binder RV (1999) Testing object-oriented systems, models, patterns and tools. Addison-Wesley, ReadingGoogle Scholar
  8. 8.
    Bosch J (1998) Design patterns as language constructs. J Object Oriented Programm 11(2): 18–32Google Scholar
  9. 9.
    Budinski F, Finnie M, Yu P, Vlissides J (1996) Automatic code generation from design patterns. IBM Syst J 35(2):151–171 Available (March 2006) at Scholar
  10. 10.
    Bushmann F, Meunier R, Rohnert H, Sommerlad P, Stal M (1996) Pattern-oriented software architecture: A system of patterns, Vol 1. Wiley, New YorkGoogle Scholar
  11. 11.
    Chambers C, Harrison B, Vlissides J (2000) A debate on language and tool support for design patterns. In Proceedings of POPL 2000 (27th ACM SIGPLAN-SIGACT symposium on principles of programming languages), Boston, ACM Press, pp 277–289Google Scholar
  12. 12.
    Dubois P, Howard M, Meyer B, Schweitzer M, Stapf E (1999) From calls to agents. JOOP (J Object Oriented Programm) 12(6): 1999 Available (March 2006) at Scholar
  13. 13.
    Eclipse (2006) Aspectj project. Available (March 2006) at Scholar
  14. 14.
    ECMA International (2005) ECMA Standard 367: Eiffel: analysis, design and programming language, approved 21 June 2005. (Expected to become ISO standard in 2006)Google Scholar
  15. 15.
    ETH Zurich (2006) Chair of Software Engineering: AutoTest project pages and articles, available (March 2006) from Scholar
  16. 16.
    ETH Zurich (2006) Chair of software engineering: pattern library and pattern wizard; available (March 2006) from the download page. Scholar
  17. 17.
    Gamma E, Helm R, Johnson R, Vlissides J (1995) Design Patterns. Addison-Wesley, ReadingGoogle Scholar
  18. 18.
    Hachani O, Bardou D (2003) On Aspect-oriented technology and object-oriented design patterns. In: Proceedings of the workshop on Analysis of Aspect-Oriented Software, held in conjunction with ECOOP 2003 (17th European conference for object-oriented programming), Darmstadt, Germany. Available (March 2006) at Scholar
  19. 19.
    Hannemann J, Kiczales G (2002) Design pattern implementation in Java and AspectJ. In: OOPSLA 2002 (17th ACM conference on object-oriented programming, systems, languages and applications, Seattle 4–8 November 2002, ACM Press, pp 161–173Google Scholar
  20. 20.
    Jézéquel J-M, Train M, Mingins C (1999) Design patterns and contracts. Addison-Wesley, ReadingGoogle Scholar
  21. 21.
    Kennedy A, Syme D (2001) Design and implementation of generics for the .NET common language runtime. In: Proceedings of PLDI 2001 (ACM conference on programming language design and implementation), Snowbird, UT. Available (March 2006) at clrgen/generics.pdfGoogle Scholar
  22. 22.
    Kiczales G, Lamping J, Mendhekar A, Maeda C, Videira Lopes C, Loingtier J-M, Irwin J (1997) Aspect-oriented programming. ECOOP 1997 (European conference for object-oriented programming), Jyväskylä, Finland, 9–13 June 1997. In: Aksit M, Matsuoka S (eds) LNCS 1241. Springer, Berlin Heidelberg New York, pp 220–242. Available (March 2006, registration required) at service/series/0558/papers/1241/12410220.pdfGoogle Scholar
  23. 23.
    Meyer B (1986) Applying ‘Design by Contract’. Technical Report TR-EI-12/CO, Interactive Software Engineering Inc; also in IEEE Comput 25(10):40–51Google Scholar
  24. 24.
    Meyer B (1988) Object-oriented software construction. Prentice Hall, Eaglewood cliffsGoogle Scholar
  25. 25.
    Meyer B (1991) Design by contract. In: Mandrioli D, Meyer B (eds) Advances in object-oriented software engineering, Prentice Hall, pp 1–50Google Scholar
  26. 26.
    Meyer B (1991) Eiffel: the language. Prentice Hall, Eaglewood cliffs (second printing, 1992)Google Scholar
  27. 27.
    Meyer B (1997) Object-oriented software construction, 2nd edn. Prentice Hall, Eaglewood cliffszbMATHGoogle Scholar
  28. 28.
    Meyer B (2004) The power of abstraction, reuse and simplicity: an object-oriented library for event-driven design. In: Owe O, Krogdahl S, Lyche T (eds) From object-orientation to formal methods: essays in memory of Ole-Johan Dahl. Lecture notes in computer science, vol 2635. Springer Berlin Heidelberg New York, pp 236–271. Available (March 2006) at Scholar
  29. 29.
    Meyer B, Arnout K (2006) Componentization: The example, to appear in Computer (IEEE). Draft available (March 2006) at patterns/visitor.pdfGoogle Scholar
  30. 30.
    Meyer B (2006) Eiffel sthe language, 3rd edn. Draft available at (in preparation)Google Scholar
  31. 31.
    Pinto M, Amor M, Fuentes L, Troya JM (2001) Run-time coordination of components: design patterns vs. component & aspect based platforms. In: ASoC workshop (Separation of Concerns), 18–22 June 2001, Budapest. Available (March 2006) at pinto-asoc-eccop01.pdfGoogle Scholar
  32. 32.
    Waldén K, Nerson J-M (1995) Seamless object-oriented software architecture. Prentice Hall, Englewood cliffsGoogle Scholar

Copyright information

© Springer-Verlag London Limited 2006

Authors and Affiliations

  1. 1.AXA Rosenberg Investment Management LLC, Barr Rosenberg Research Center4 Orinda Way, Building EOrindaUSA
  2. 2.Computer Science DepartmentETH ZurichZurichSwitzerland
  3. 3.Eiffel SoftwareGoletaUSA

Personalised recommendations