코드를 작성하다보면 같은 개념을 가지고 있는데 기능의 세부사항이 달라지는 경우가 있다. 이럴 땐 상속을 받으면 매번 오버라이딩을 해줘야 하고 기능이 추가되거나 수정될 때마다 다시 영향을 받아서 정말 번거롭다. 이럴 때 쓰는 것이 전략패턴이다. 전략패턴은 특정한 작업을 독립적으로 정의해서 원하는 작업으로 동적으로 교체할 수 있게 만드는 것이다. ● 전략 패턴은 어떻게 구현할까 특장한 작업을 정의하는 것은 인터페이스를 사용한다. 그리고 해당 작업을 구현하는 것은 그 작업을 가지고 있는 어떤 클래스에서 하는 것이 아니라 해당 작업만을 목적으로 하는 클래스를 따로 만들어서 구현한다. 예를 들어 총을 쏜다는 작업이 있다. 그러면 총을 쏘는 슈터라는 클래스에서 구현하는 것이 아니라 BB탄 총 클래스를 만들어서 BB..