직역하면 추상적인 공장

공장은 Object를 생성하는 공장이고

추상적인 공장이라 함은 생성하는 Object가 추상화되어 있다는 것이다


책에 있는대로 Object는 Maze를 예로 들겠다


Abstract Factory는 시스템에게, EnhancedMaze를 생성하는 factory인지, BoomMaze를 생성하는 factory인지에 대하여 추상화 되어있다
시스템(Client라고도 할 수 있다)은 어떤 Maze가 생성되는 지 모른다


그저 Factory를 통해서 어떤 Maze 생성을 수행한다

이것이 추상화의 의미


--- 효과 ---


Abstract Factory를 사용하면 Object와 시스템의 의존성을 제거함으로서 재사용성을 높일 수 있다

EnhancedMaze를 사용하는 System이 이미 있을 때, 이 시스템을 재사용하여 BoomMaze를 사용하는 System을 손쉽게 구현할 수 있다는 것이다


Clean Code에서는(197p) Abstract Factory를 이용하여 Application이 object 생성 시점을 결정(lazy initialization와 같은)하되, Object를 생성하는 코드는 애플리케이션(앞에서 시스템이라고 언급했던)이 모르게 한다고 되어있다




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/