The factory method design pattern