Design patterns have been recognized to be very important and useful. Especially, for software reuse and evolution, they have strong potential. In order to utilize design patterns in real software development, we need appropriate implementation techniques of them. Ordinary implementation of design patterns, however, is not always enough. One of the most typical ways is based on the inheritance mechanism. This makes applications quite dependent on patterns and reduces reusability of the application core part. In addition, it is difficult to exchange patterns once a system is designed. In this paper, we introduce a way to implement design patterns more flexibly, applying the concept of separation of concerns. It is realized by separating design patterns, as explicit concerns, from the application core that is responsible for the primary functionalities. This approach improves the reusability of both the design pattern part and the application core part of a system, and it provides the possibility to switch patterns using the very same application core classes. The new implementation technologies that support the advanced separation of concerns such as ApsectJ and Hyper/J help with coding this kind of design. We show that the introduced implementation of design patterns can be coded in reality using these new language/environment, and compare the two language/environment. Furthermore, we show the applicability of this method to the GoF’s patterns.
[1]
Harold Ossher,et al.
Workshop on advanced separation of concerns in software engineering
,
2001,
Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.
[2]
Gregor Kiczales,et al.
Aspect-oriented programming
,
2001,
ESEC/FSE-9.
[3]
Martin P. Robillard,et al.
Separating features in source code: an exploratory study
,
2001,
Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.
[4]
Cristina V. Lopes,et al.
Aspect-oriented programming
,
1999,
ECOOP Workshops.
[5]
Jan Bosch.
Design Patterns & Frameworks: On the Issue of Language Support
,
1997,
ECOOP Workshops.
[6]
Stanley M. Sutton,et al.
Hyper/J™: multi-dimensional separation of concerns for Java™
,
2001,
ICSE '02.
[7]
Harold Ossher,et al.
Hyper/J/sup TM/: multi-dimensional separation of concerns for Java/sup TM/
,
2000,
Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.
[8]
Ralph Johnson,et al.
design patterns elements of reusable object oriented software
,
2019
.