In this paper, we propose a strategy language for designing constraint solvers and schemes of solver collaborations. Solvers are seen as bricks that can be integrated when creating more complex solvers that can become themselves new bricks to compose new solvers. These bricks are glued together using operators of our language. A pattern of operators can be used to create solvers and collaborations for solving different types of constraints. We illustrate the use of this language by describing some well-known techniques for propagation-based solvers, optimization problems, and collaboration of solvers (symbolic/numeric cooperation, linear/non-linear collaboration, local consistency combination).