코드에 대한 자세한 설명은 생략 하겠다. 중요한 포인트는 여기서 더 확장시키려고 한다면 똑같이 Champion을 구현하고 똑같은 방식으로 만들것이 분명하다.
중복된 코드도 많이 발생
=> 하나의 구현체로 다양한 표현을 하려니 복잡해진다
장점
코드의 중복을 막을수 있다.
확장을 할때 구체적인 부분의 변화가 있어도 추상적인 부분(공통부분) 은 변화가 없다
객체지향의 특징 OCP를 실현 할수 있다.
단점