Gang of Four 라 불리던 컴퓨터 공학자인 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides)에 의해 만들어진 디자인 패턴으로 효율적인 프로젝트를 진행하기 위해 고안되었습니다.
GOF(Gang of Four) 디자인 패턴은 소프트웨어 디자인에 대한 디자인 패턴을 제시한 책인 "Design Patterns: Elements of Reusable Object-Oriented Software"에서 소개된 디자인 패턴을 의미합니다.
GOF 디자인 패턴은 객체 지향 소프트웨어 디자인에서 공통적으로 발생하는 문제를 해결하기 위한 일련의 디자인 패턴을 제시합니다. 이러한 디자인 패턴은 객체 지향 소프트웨어를 설계할 때 생기는 문제를 해결하는 방법을 제공하며, 디자인 패턴을 적용하여 소프트웨어의 유지보수성, 재사용성, 확장성 등을 높일 수 있습니다.
GOF 디자인 패턴은 크게 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행동 패턴(Behavioral Patterns)으로 구분됩니다. 각각의 패턴은 특정한 상황에서 적용할 수 있으며, 이를 적용함으로써 소프트웨어 디자인의 효율성과 유지보수성을 향상시킬 수 있습니다.
● 싱글톤 패턴의 특징
- 싱글톤 패턴은 object(객체)가 application에서 오직 1개만 생성되야 하는 경우에 사용되는 패턴입니다.
- 싱글톤은 클래스의 인스턴스는 오직 하나임을 보장하며 이 인스턴스에 접근할 수 있는 방법을 제공합니다.
- 클래스에서 만들 수 있는 객체를 오직 하나로 만들어서 이에 대한 접근을 하나로 통일하여 제공합니다.
- 싱글톤 패턴을 사용하면 유일하게 존재하는 객체로의 접근을 통제 할 수 있습니다.
아래는 GOF에서 소개된 디자인 패턴 중 생성패턴에서 싱클턴 패턴에 대한 예제를 보여줍니다.
저는 실무에서 스프링부트 프로젝트를 진행할 때는 인텔리제이를 많이 쓰는 편이지만 간단한 자바코드를 코딩할 때는 비주얼 스튜디오 코드도 자주 사용합니다.
아래는 비주얼 스튜디오 코드에서 싱글톤을 구현한 코드입니다.
객체지향 개념에 대해서 아시는 분이라면 금방 이해하실 것이고 익숙하지 않으신 분들을 위해서 코드를 약간 설명하자면..
4번째 라인에서 private으로 Singleton 클래스의 생성자를 만들어주고.
6라인에서는 private static class로 인스턴스를 생성해 주게 되어 있습니다.
10라인에서 외부에서 싱글톤 객체에 접근할 수 있는 getInstace 메서드를 만들어 주었습니다.
15번 라인에서 getInstance() 메서드를 호출하고, 16라인에서 그 객체의 주소를 찍었습니다.
매번 호출하더라도 객체의 주소는 바뀌지 않는다는 걸 보실 수 있으실 겁니다.
그럼 즐코딩하세요. ^^
'JAVA > GOF Design Pattern' 카테고리의 다른 글
GOF Observer Pattern (0) | 2023.05.09 |
---|---|
GOF Abstract Factory Pattern (0) | 2023.05.08 |
GOF Iterator 패턴 (0) | 2023.04.28 |
Gof Template method 패턴 (0) | 2023.04.28 |
GOF Factory method 패턴 (0) | 2023.04.26 |