Self-Adaptive systems have many complex properties such as openness in a situated environment, sensibility to changes, and dynamic of a system. Finding ways to develop such complex systems is still a problem in the literature of software engineering. In this paper, the autonomous entities in self-adaptive systems are abstracted as software agents, and the dynamic binding mechanism for self-adaptation is proposed based on the organization metaphors. A self-adaptive strategy description language called SADL (self-adaptive strategy description language) is presented to describe adaptive strategies that express how agents adapt to the changes. The complier and operating environment for SADL have been developed. This approach enables developers to separate the adaptation logic from functional logic of self-adaptive systems and explicitly describe self-adaptation in order to simplify the development and maintenance of complex self-adaptive systems. This case is studied in detail to illustrate the effectiveness of this proposed approach.