This paper proposes design patterns for self-adaptive software systems to address the complexity and uncertainties faced in modern software development. It emphasizes the importance of feedback control loops and provides a systematic approach to modeling interactions among multiple control loops using the MAPE-K model. A case study demonstrates the practicality of these design patterns in real-world applications.