Components should provide variability in satisfying a variety of domains [1], but it is not easy to develop components which can be applied to all domains. For this reason, when using time-to-market, components are slow and reusability of the components decreases. Hence, providing the variability of components becomes an important prerequisite for a successful component-based application development project.In this paper, we propose a variability design technique that can satisfy the requirements of many different kinds of domains. This technique addresses a method for designing the variability of the behavior and the workflow in a more detailed manner, and uses an object-oriented mechanism and design patterns. One of the most important goals of this technique is to provide a practical method which can be effectively applied to component-based application development.