Les design patterns : principes et types