Software Architectures and Patterns for Pricing Applications
18.1 INTRODUCTION AND OBJECTIVES
The goal of this chapter is to describe what design patterns are, their origins and a number of new developments in the years since the Gamma patterns book (GOF 1995) was published. We also describe how C# supports and extends the GOF patterns. There are twenty-three documented patterns in GOF 1995. In our experience we have found that a small subset of these patterns is most useful over a range of applications, as we discuss in Section 18.2. The GOF patterns are based on the principles of object-oriented inheritance, subtype polymorphism and composition. There has been a lot of discussion (at times, quite subjective and emotive) of the perceived benefits and potential risks associated with the introduction of design patterns in complex software systems. We give a number of personal (and possibly subjective) observations on the matter:
- Design patterns are solutions to problems and they should not be used as an objective in themselves.
- We need to determine the level of software flexibility that we wish to achieve before we embark on a patterns-based design. For example, you probably do not need to use patterns if you are developing a proof-of-concept throwaway prototype. It is for this reason that we think that there is not much point in using classes, objects and patterns in Matlab projects.
- Even when they are useful, some developers may prefer not to use design patterns. It is important ...