Gothic Design Patterns

01 May 2018

A few years ago, I took a class in ancient architecture. We covered everything from prehistoric monuments such as Stonehenge up to the gothic period. The topic that I found most fascinating was gothic architecture. Gothic buildings share many common features among each other and those were not solely used for aesthetic purposes. Some of the features of gothic architecture were used because how efficient they were at making the overall structure stable compared to the other known methods at the time. Design choices such as ribbed vaults, flying buttresses, and pointed arches were all used to address possible problems with the overall stability of the building.

In a way, building computer program can be comparable to a building a structure. Just like a building, a program is made up of many components. There are many different ways to design each component with each design choice having its own advantages and disadvantages. The different design choices are certainly not all equal. If poor design choices are made when designing a program or a building then they may not be stable, or you could end up with a lot of problems later. Pattern designs are designs which are used to solve commonly reoccurring problems when you are programming. Being able to identify problems during development and knowing the appropriate pattern design to apply is a skill that is important for programmers. Software developers that are familiar with the various pattern designs will have to have to think less about how to structure their code and they can be confident in how they’ve structured their code. Perhaps pattern designs such as the factory pattern and the singleton pattern can be likened to patterns in gothic architecture such as ribbed vaults and pointed arches during the gothic period.

The topic of pattern design has come up because I have been learning about pattern designs in my software engineering class this week. What I have realized while learning about them is that I have been using some of them without knowing what they were. One of the pattern designs that we covered was the Model-View-Controller pattern. I have been using this pattern in my software engineering class for the past few weeks while working on a website for a group project. Hopefully I haven’t been using anti design patterns without realizing it too. I plan to better familiarize myself with design patterns to make future projects more manageable.