Patterns

What

  • Patterns are just a common solution, to a common problem using a ubiquitous language

    • ease to describe and discuss them

    • patterns can be the same, but be different in terms of their aims

  • Patterns occurs not just object oriented code, but in other areas see Types of patterns

    • patterns can language specific, ie see effective java by Bloc

  • In essence, they are used to make code more changeable.

  • Depending on the language used, or libraries, or tech, these will either implement these patterns (fill in the gaps) or make them redundant

Types of patterns

  • code

    • functional

    • oo

  • language specific

  • integration

  • module

  • architectural

  • database

  • tests

  • ops - CI, deployments, platform, builds,

  • workflow

  • concurrency

  • enterprise

  • front end

  • security

  • Debugging

  • team patterns

    • conventions

  • department patterns

Issues

  • people can be over eager, in implementing patterns, when they are not needed

  • Only use them if they improve some aspect (NFR) which is needed

  • patterns over usage can increase complexity for no reason

  • https://www.quora.com/A-senior-software-engineer-in-our-team-told-me-that-the-popularity-of-design-patterns-has-led-to-a-kind-of-pattern-abuse-and-over-designing-by-novice-programmers-what-does-he-mean

  • https://java-design-patterns.com/patterns/

  • https://dzone.com/articles/design-patterns-in-the-age-of-microservices-and-frameworks

Updated for java 8

  • https://www.infoq.com/news/2022/10/modern-java-design-patterns/

Last updated