구현과 추상화 개념을 분리해서 각각을 독립적으로 변형할 수 있게 한다.