PerfectJPattern is a framework and catalog of perfectionated and componentized Java Design Patterns. A componentized pattern is in essence a context-independent, reusable and type-safe variation of the original pattern that covers at least as many use-cases as the original pattern and that does not require developers to re-implement the same boilerplate code in every different context. Design Patterns are reusable in terms of design, componentized patterns are reusable in terms of design and code.
PerfectJPattern is inspired by the original work of Prof. Dr. Bertrand Meyer Trusted Components and Karine Arnout Thesis From Patterns to Components conceptually possible in any language but their work is tailored to the Eiffel programming language e.g. strongly relies on Eiffel's Agent mechanism and Eiffel's Design by Contract whereas there are no such features in Java. The Agent mechanism natively supported in Eiffel is equivalent to the Delegates Language feature, supported natively in other languages e.g. .NET C# but not in Java.
The term Component used all over PerfectJPattern is Prof. Dr. Bertrand Meyer's definition: "... a software component is a reusable software element, typically some library classes, usually in source form (not binary form), which differs from Clemens Szyperski's view of components." Meyer was already writing in 1997: "A successful pattern cannot just be a book description: it must be a software component".
Several advantages of relying on a library of componentized Design Patterns:
The scope of this project is to build and offer to the Java community:
SynchronizedObserverproxy that would protect any
Observerimplementation from "race hazards" if notified concurrently from multiple Subjects notifying from separate threads.
I would like to thank: