Refactoring Composite to Visitor and Inverse Transformation in Java

We describe how to use refactoring tools to transform a Java program conforming to the Composite design pattern into a program conforming to the Visitor design pattern with the same external behavior. We also describe the inverse transformation. We use the refactoring tools provided by IntelliJ IDEA and Eclipse.

[1]  Patrick Nixon,et al.  Composite Refactorings for Java Programs , 2000 .

[2]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[3]  Doo-Hwan Bae,et al.  An automated refactoring approach to design pattern-based program transformations in Java programs , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[4]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

[5]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[6]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[7]  Yann-Gaël Guéhéneuc,et al.  Automatic Generation of Detection Algorithms for Design Defects , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[8]  Mel Ó Cinnéide Automated application of design patterns : a refactoring approach , 2001 .

[9]  D. Janaki Ram,et al.  JIAD: a tool to infer design patterns in refactoring , 2004, PPDP '04.

[10]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[11]  Julien Cohen,et al.  Practical use of static composition of refactoring operations , 2013, SAC '13.

[12]  P. David Stotts,et al.  SPQR: flexible automated design pattern extraction from source code , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[13]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[14]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[15]  Julien Cohen,et al.  Views, Program Transformations, and the Evolutivity Problem in a Functional Language , 2010 .

[16]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[17]  Don Batory,et al.  Automated Software Evolution via Design Pattern Transformations , 1995 .

[18]  Rémi Douence,et al.  Invertible Program Restructurings for Continuing Modular Maintenance , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[19]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..

[20]  Mel Ó Cinnéide,et al.  A methodology for the automated introduction of design patterns , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[21]  Oege de Moor,et al.  JunGL: a scripting language for refactoring , 2006, ICSE.

[22]  Paul Klint,et al.  A Case of Visitor versus Interpreter Pattern , 2011, TOOLS.