Design patterns practice and sample examples