design pattern lab