In this chapter, we will introduce and explore the theory and design concepts used while developing Jenkins plugins. We will cover the high-level concepts here with some generic examples as a preparation for the next two chapters where we will see how to implement these ideas for real.
In this chapter, we will take a look at the following design patterns:
Interfaces
Abstract classes
Singletons
Also, we will review several important design concepts:
Design by contract
Extension points
Creating extensions
Annotations