디자인 패턴, Singleton 패턴

세현·2024년 10월 30일
0

디자인 패턴

디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미

소프트웨어 디자인 과정 중에서 자주 발생하는 문제들을 어떻게 해결할 것인지에 대한 해결 방안

디자인 패턴은 객체 지향 4대 특성 과 설계 원칙을 기반으로 구현

디자인 패턴의 장점

  1. 재사용성 : 반복적인 문제에 대한 일반적인 해결책을 제공, 이를 재사용하여 유사한 상황에서 코드를 더 쉽게 작용 할 수 있다.
  2. 가독성 : 일정한 구조로 정리하고 명확하게 작성하여 개발자가 코드를 이해하고 유지보수하기 쉽게 만든다.
  3. 유지보수성 : 코드를 쉽게 모듈화 할 수 있으며, 변경이 필요한 경우 해당 모듈만 수정하여 유지보수가 쉬워진다.
  4. 확장성 : 새로운 기능을 추가하거나 변경할 때 기존 코드를 변경하지 않고 새로운 기능을 통합 가능
  5. 안정성과 신뢰성

Singleton 패턴

정의

하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴,
하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 하나의 인스턴스를 만들어 이를 기반으로 로직 작성

사용 이유

고정된 메모리 영역을 얻으면서 한번의 생성으로 인스턴스를 생성해서 사용하기 때문에 메모리 낭비를 방지
싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다. ex) DBCP

Flutter로 구현

우선 싱글톤 클래스를 구현해보았다.

class Singleton {
  // 만약 클래스에 변수를 담고 싶으면
  String _data = "";

  Singleton._internal();

  static final Singleton _instance = Singleton._internal();

  factory Singleton() => _instance;

  set(String newData) => _data = newData;
  String get data => _data;
}

싱글톤 클래스를 통해 인스턴스 생성하여 확인

void main() {
  Singleton singleton1 = Singleton();
  print(singleton1._data);

  singleton1.set("안녕하세요");
  print(singleton1._data);
  Singleton singleton2 = Singleton();
  print(singleton2._data);
}

싱글톤 객체를 두개 생성해 보았고, 생성된 두 객체의 내부 변수를 불러왔을 때 하나의 인스턴스의 내용을 공유하는 것을 확인할 수 있었다.

  • 실행 화면

다음에는 Dio와 Firebase를 싱글톤 패턴으로 구현해보는것을 목표로 공부해봐야겟다.

profile
안녕하세요

0개의 댓글

관련 채용 정보