https://profilbaru.com/article/Layer_(object-oriented_design)