Learning design pattern