https://justgokus.medium.com/16-behavioral-design-patterns-that-may-change-your-perspective-c37a31059ddb