This is a refactoring code kata where the code used over here https://legalizeadulthood.wordpress.com/2018/10/28/refactoring-the-long-game/ has been further refactored.
(YouTube Link - Refactoring: The Long Game )
In the video, the code has been refactored to make it testable.
I have added Characterization Tests/Approval Tests to the code refactored above without using any ApprovalsTest Framework like ApprovalTests.Java
I have further refactored the code to apply design patterns.
The Refactorings used are from Martin Fowler: Refactoring and Joshua Kerievsky: Refactoring to Patterns books.
I have used Chain Of Responsibility
pattern, inspired by Emily Bache's Tennis Game Refactoring Kata - https://github.com/emilybache/Tennis-Refactoring-Kata (especially the Chain Of Responsibility implementation)