design pattern lecture