site:geeksforgeeks.org best approach design patterns coding - Search