state안에 로직을 구겨넣는 패턴임.

owner 타입의 스위치문 제거, 메서드 다형화 제거에 사용됨.

물론 심각한 문제점이 있는데, 가독성이 떨어진다는거임.

그래서 아무도 추천하지 않는 방법임.

디자인 패턴 배우면 안됨.

abstract class 사용언어
{
public abstract void 십년뒤행동(프로그래머 programmer);
}
class 시샵 : 사용언어
{
public override void 십년뒤행동(프로그래머 programmer) => programmer.섹스하기();
}
class 자바 : 사용언어
{
public override void 십년뒤행동(프로그래머 programmer) => programmer.자살하기();
}
class 프로그래머
{
private 사용언어 사용언어;
public void 섹스하기() { }
public void 자살하기() { }
public 프로그래머(사용언어 사용언어) => this.사용언어 = 사용언어;
public void 십년뒤행동() => 사용언어.십년뒤행동(this);
}