Comece estudando SOLID principles, tem varios videos sobre isso no youtube com exemplos inclusive. Depois vc dá uma olhada no Clean Code. Então depois em Object Calisthenics.
Nesse ponto seu código já está bem melhor. Se quiser um resumo, ta aqui: https://gist.github.com/danielschmitz/95c6eb40a3845f89498a3c748e932f44#CleanCode
Lembrando que muitos designs sao concorrentes, vc escolhe um e usa !! Depende muito do "feeling" do que vc gosta mais.
Deixo aqui um link com varios exemplos:
https://designpatternsphp.readthedocs.io/en/latest/README.html