"이름과 연도는 인스턴스의 속성이야. 우리가 찾는 건 그 인스턴스를 찍어낸 클래스고."
어휘부터 단단히 잡자
인스턴스는 실제로 관측한 사람, 사건, 이야기야. 이름과 장소와 연도, 우연한 세부가 붙어 있어. 거푸집은 여러 인스턴스가 공유하는 구조야. 같은 조건에서 비슷한 선택과 결과를 거듭 찍어내는 뿌리 클래스라고 생각하면 돼. 역사 읽기는 실명을 지우는 일이 아니라, 실명을 보존한 채 그 사이의 공통 구조를 꺼내는 일이야.
제 환공, 나폴레옹, 1985년의 Steve Jobs, 마오쩌둥은 같은 사람이 아니며 같은 도덕 평가를 받을 이유도 없어. 하지만 오르는 동안 유능한 반대 압력을 활용하다가 정점에 가까워질수록 그 제동장치를 약화시키고, 마침내 판단이 현실에서 멀어지는 흐름은 비교할 수 있어. 겉의 속성은 달라도 메서드가 불리는 순서가 닮은 셈이지.
좋은 거푸집의 조건
좋은 거푸집은 세 가지 검사를 버텨. 첫째, 한 문화나 한 시대 밖에서도 다시 나타나야 해. 둘째, 다음 인스턴스에서 무엇을 관찰해야 할지 알려줘야 해. 셋째, 맞지 않는 표본을 억지로 구겨 넣지 않아야 해. 무엇이든 설명한다는 거푸집은 사실 아무것도 예측하지 못하거든.
그래서 위대한 사람은 몰락한다는 너무 흐려. 대신 상승기에 작동하던 반대 압력이 정점 뒤 사라지면, 모순 정보가 늦게 들어오고 붕괴가 빨라진다고 쓰면 관찰 항목이 생겨. 누가 반대했는지, 그 사람이 언제 사라졌는지, 뒤이어 어떤 결정 오류가 났는지 볼 수 있지.
OOP가 여기서 만나는 이유
OO에서는 클래스가 속성과 행동을 정의하고 인스턴스가 그것을 구체적으로 구현해. 역사도 비슷하지만 순서는 반대야. 코드는 설계자가 클래스를 먼저 만들지만, 현실에서는 인스턴스를 먼저 본 뒤 클래스를 거꾸로 추론해야 하지. 그래서 확신을 늦추는 태도가 중요해. 표본이 적을 때 만든 클래스는 어디까지나 잠정안이야.
그리고 상속은 혈통만을 뜻하지 않아. 황제, CEO, 부모, 동호회 회장이 권력을 얻고 쓰는 과정에서 같은 행동을 보인다면 규모와 직함을 넘어 같은 상위 클래스를 상속한다고 볼 수 있어. 이런 규모 불변성이 뒤의 트랙들을 하나로 묶어줄 거야.
네 표본에서 거푸집이 올라오는 과정
제 환공은 춘추시대에 관중의 도움으로 첫 오패가 됐어. 관중이 죽자 역아·수조·개방이라는 세 아첨꾼을 가까이했고, 아들들이 왕위를 다투는 동안 홀로 죽어 시신이 67일이나 묻히지 못했다고 전해져. 이 하나만 보면 슬픈 왕 이야기로 끝나.
나폴레옹은 탈레랑의 조언을 밀어내고 러시아 원정을 감행한 뒤 유배로 끝났어. Steve Jobs는 1985년 자기 이사회에 의해 Apple에서 밀려났다가 더 겸손하게 돌아와 두 번째 정점을 만들고 승계를 설계했지. 마오는 아첨하는 사람들 속에서 경고를 밀어낸 채 문화대혁명을 시작했어. 네 표본을 함께 놓으면 정상에 오른 사람이 상승기의 제동장치를 잃을 때, 자기 생애나 직후 후계 국면 안에 파괴를 부른다는 후보 거푸집이 보여.
인스턴스에는 Battle of Hastings 같은 사건과 Apple 1985 같은 이야기도 들어가. 유용한 역사 거푸집의 수는 수천이 아니라 수십 개쯤일 수 있어. 표본 하나에 서둘러 이름을 붙이면 잡음이고, 스무 표본이 쌓인 뒤에도 이름 붙이기를 거부하면 보고 싶지 않은 것을 외면하는 셈이야.
OO Quest와 이어지는 같은 어휘
OO Quest의 For Instance도 클래스는 거푸집이고 객체는 그 클래스의 인스턴스라는 같은 움직임을 가르쳐. OO Quest가 범용 방법을 주고 이 Quest가 역사 표본으로 그 방법을 삶에 적용해. 둘은 추상화 사다리에서 서로 맞닿은 두 칸이야.
좋은 거푸집은 많은 인스턴스를 압축하고, 문화와 시대를 건너며, 지금의 행동을 바꿀 수 있어. 두 표본에만 맞는다면 단순 묘사일 수 있고, 한 문화에서만 맞는다면 적용 범위를 줄여야 하며, 죽은 사람에게만 맞는다면 행동으로 이어지는 높이를 다시 찾아야 해.