Design pattern
[Design Pattern] Singleton Pattern
1. 싱글턴 패턴 정의 인스턴스가 오직 하나만 생성되는 것을 보장하고, 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴 하나의 인스턴스만을 생성하는 책임 있음 getInstance 메서드를 통해 모든 클라이언트에게 동일한 인스턴스 반환하는 작업 수행 2. 싱글턴 패턴 구현 - 생성자의 접근 지정자 private으로 설정 - getter를 통해 인스턴스를 제공 다중 스레드 애플리케이션에서 (싱글톤 구현시) 발생하는 문제 경합 조건(race condition) : 메모리와 같은 동일한 자원을 2개 이상의 스레드가 이용하려고 경합하려는 현상 ※ 해결 방법 ※ 1. 정적 변수에 인스턴스를 만들어 바로 초기화 (Eager Initialization) 2. 인스턴스를 만드는 메서드에 동기화 (Threa..
[Design Pattern] Strategy pattern
전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴 전략 = 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비지니스 규칙, 문제를 해결하는 알고리즘 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌, 전략만 변경하여 유연하게 확장하는 패턴 • 무엇이 변화되었는지를 찾은 후에 이를 클래스로 캡슐화 • 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 필요할 때 교체 가능 • SOLID 중 OCP와 DIP 따름 • 다음의 3가지가 있어야 함. 전략 메소드를 가진 객체 전략 객체를 사용하는 컨텍스트 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 Strategy : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시 ConcreteS..
[Design Pattern] SOLID 원칙
좋은 소프트웨어 설계 → 결합도(coupling)는 낮추고 응집도(cohesion)는 높이는 것 응집도(cohesion) : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성 결합도(coupling) : 모듈(클래스)간의 상호 의존 정도를 나타내는 지표 1. SRP(Single Responsibility Principle) - 단일 책임 원칙 책임 = 변경 이유 책임 분리 : 클래스는 단 하나의 책임 만을 가지도록 설계 회귀 테스트(regression test) : 시스템에 변경이 발생할 때 기존 기능의 영향을 주는지 평가 → SRP에 따른 설계 : 응집도 높히고, 결합도 낮춤 2. OCP(Open Closed Principle) - 개방 폐쇄 원칙 기존 코드를 변경하지 않으면서, 새로운 기능 추..