디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을
이용하여 해결할 수 있도록 하나의 형태로 만들어 놓은 것
객체 생성에 관련된 패턴으로, 객체 생성 과정을 보다 유연하게 만들어줍니다. 예를 들어, 싱글톤(Singleton), 팩토리 메소드(Factory Method), 추상 팩토리(Abstract Factory), 빌더(Builder), 프로토타입(Prototype) 등이 있습니다.
클래스나 객체를 조합해 더 큰 구조를 만드는 패턴입니다. 이 패턴들은 다양한 객체들 사이의 관계를 정의하여, 복잡한 시스템을 보다 효율적으로 설계할 수 있도록 도와줍니다. 대표적인 예로는 어댑터(Adapter), 데코레이터(Decorator), 퍼사드(Facade), 컴포지트(Composite), 프록시(Proxy) 등이 있습니다.
객체들 사이의 통신 방법과 책임 분배에 초점을 맞춘 패턴입니다. 이러한 패턴들은 객체들이 서로 상호작용하는 방식을 정의하고, 복잡한 흐름을 관리하거나 알고리즘을 캡슐화하는 데 유용합니다. 대표적인 행위 패턴으로는 옵저버(Observer), 스트래티지(Strategy), 커맨드(Command), 스테이트(State), 이터레이터(Iterator), 메멘토(Memento), 메디에이터(Mediator), 방문자(Visitor) 등이 있습니다.
싱글톤(Singleton) 패턴은 생성 패턴의 하나로, 어떤 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다
싱글톤 패턴을 사용하면 동일한 객체를 여러 번 생성하는 대신 하나의 인스턴스만 생성하고 재사용함으로써 메모리 사용량을 줄일 수 있습니다. 이는 특히 웹 애플리케이션과 같이 제한된 리소스 환경에서 중요할 수 있습니다.
싱글톤 패턴을 사용하면 특정 기능을 담당하는 모듈이나 서비스를 구현할 때 해당 모듈이나 서비스의 인스턴스가 하나만 존재함을 보장할 수 있습니다. 이로 인해 코드의 모듈성과 재사용성이 향상되며, 다른 부분의 코드와의 결합도가 낮아집니다.