Software design patterns are elaborate ways to deal with specific recurring issues in software development. They are re-usable templates, plans that can be applied in multiple situations to help, not only create more coherent system designs, but also increase maintainability and extensibility. However, no two programming languages are perfectly alike. Each have their own styles and design philosophies, often valuing different aspects of programming. The aim is to determine whether the design patterns’ values are preserved in varying object-oriented environments and how they interact with one another. This study examines a small set of the classic design patterns, cataloged by the Gang of Four decades ago, and how they behave in a few distinct, modern programming languages, specifically Scala, Python and C#. Each of the selected design patterns are implemented in each of the three languages along with other feasible alternatives. The implementations are thereafter compared between the languages for each pattern in an attempt to identify language properties which may have an effect to the patterns’ structure or benefits. Evaluation of the results show a great variety of elements which affect how a pattern looks like in a given programming language. The patterns are commonly least affected in statically-typed languages and retain most of their intended purposes, while some prove to be redundant in dynamic languages. Evidence suggest that certain design patterns were originally developed as replacements for language features found in other languages, usually with differing paradigms. A common use being emulation of operations commonly found in functional languages, but not present in object-oriented languages.