Software architecture is defined as the structured process providing a solution that meets technical and operational requirements of a project while optimizing performance and security. Architecture provides a set of abstract patterns guiding the design of a software system. This provides for problem-solving and planning to a software solution. Once the purpose and specifications of the proposed software is determined the next step is to design a plan for the solution. Design Patterns allows designers to reuse the fundamental concepts of methodologies employed from previous solutions to complete a current project. These patterns provide a template on how to solve a problem in various situations.
According to (Tichy, 2010) design patterns serve to improve the structure of the software, simplify maintenance and help avoid architectural drift. Design patterns also allow for improved communication amongst the software developers which results in a superior product. Patterns are used as they speed up developmental processes by providing tested, proven development paradigms. Reusing design patterns improves code readability for coders. There are two categories in design patterns, Creational design patterns and Structural Design Patterns. This paper will discuss examples of each underlining their objectives and disadvantages.
Structural design patterns
Adopter Design Pattern (aka Wrapper)
Adopter design pattern converts the interface of one class into another class. This achieved by taking the instance of the class to be converted and uses the methods the adoptee has available to create methods which are expected. It wraps the existing class with a new interface. It allows for impedance by matching an old component to a new system. This becomes particular useful when for instance a company purchases an off the shelf product and wishes to adopt it into their current system. The disadvantages of this method arises when trying to implement new...