어제 MVC 패턴에 대해 언급하고 지나가서 이와 관련된 디자인 패턴에 대해 학습해보려고 한다. (언급할 디자인패턴은 GoF Design Pattern으로 추후 MVC에 대해 정리하려고 함. 찾아보니 MVC패턴은 옵저버 패턴 & 미디에이터 패턴이 적절히 섞였다고 함)
과거 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것
-> 즉 효율적인 코드를 만들기 위한 방법론
효율적인 코드를 빠르게 만들 수 있다
또한 팀내에서도 간결하게 소통할 수 있다 (길게 설명하지 않고 이런 패턴은 어떤가요? 하면 바로 알 수 있다)
GoF(Gang of Four) 디자인패턴으로 목적에 따라 총 23개의 패턴으로 분류했다
생성(Creational) 패턴 : 객체 생성과 관련된 패턴
객체 생성과 참조 과정을 캡슐화하여 객체가 생성 및 변경이 되어도 프로그램 구조에 영향받지 않도록 하여 프로그램에 유연성을 준다
ex - Singleton, Abstract Factory, Factory Method, Builder, Prototype
구조(Structural) 패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
구조 클래스 패턴은 클래스나 인터페이스를 합성, 구조 객체 패턴은 객체를 합성하는 방법을 정의
ex - Adapter, Composite, Decorator, Facade, Flyweight, Proxy
행동(Behavioral) 패턴 : 객체나 클래스 사이의 알고리즘, 책임 분배에 관련된 패턴
ex - Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method
디자인패턴을 외우기 보다는 각 패턴에 맞는 코딩 노하우를 습득하는 것이 중요하다! 이 코드에는 이 패턴을 적용하겠다 보다는 경험을 거쳐서 패턴이 나올 수 있도록.