전략 패턴(strategy pattern) 개념 - 정책 패턴(policy pattern)이라고도 함 - 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 장점 - 컨텍스트 코드의 변경 없이 새로운 전략 추가 가능 더보기 컨텍스트란? - 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보(상황, 맥락, 문맥) - 요구사항이 변경되었을 때 기존의 코드를 변경하지 않아도 됨 - 새로운 전략에 대해서는 새로운 클래스를 통해 관리하므로 OCP의 원칙을 준수할 수 있음 단점 - 컨텍스트에 적용되는 알고리즘이 하나이거나 두 개인 경우에는 분기를 활용하는 것이 용이할 수도 있음 - 요구사항의 변경으로 변경될 여지가 있으며, 변..
팩토리 패턴(factory pattern) 개념 - 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴 - 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정 장점 - 느슨한 결합 - 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 가짐 - 객체 생성 로직이 분리되어 있기 때문에 유지 보수성이 증가됨 단점 - 새로 생성할 객체가 늘어날 때마다, Factory 클래스에 추가해야 되기 때문에 클래스가 많아짐 코드 abstract class Coffee { public abstract int getPrice(); @Override public String toString() { r..
의존성 주입(DI, Dependency Injection) 의존성이란? - 종속성이라고도 함 - A가 B에 의존성이 있다는 것은 B의 변경 사항에 대해 A 또한 변해야 된다는 것 개념 - 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채 메인 모듈이 간접적으로 의존성을 주입하는 방식 - 메인 모듈(상위 모듈)은 하위 모듈에 대한 의존성이 떨어지게 됨 장점 - 테스팅하기 쉬움 - 마이그레이션하기 수월함 - 애플리케이션 의존성 방향이 일관됨 - 모듈 간의 관계들이 조금 더 명확해짐 단점 - 클래스 수가 늘어나 복잡성이 증가될 수 있음 - 약간의 런타임 페널티가 생기기도 함 의존성 주입 원칙 - 상위 모듈은 하위 모듈에서..
싱글톤 패턴(singleton pattern) 개념 - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - 메서드만 호출해서 사용할 때, 객체를 구별할 필요가 없기 때문에 여러 개의 객체가 필요 없음 - 이럴 때, 객체의 생성을 제한하는 singleton pattern 사용 - 보통 데이터베이스 연결 모듈에 많이 사용 장점 - 인스턴스 생성할 때 드는 비용이 줄어듦 - 다른 클래스 간에 데이터 공유가 쉬움 단점 - 의존성이 높아짐 -> 의존성 주입(DI, Dependency Injection)을 통해 모듈 간 결합을 조금 더 느슨하게 만들 수 있음 더보기 2022.07.04 - [CS] - 의존성 주입(DI, Dependency Injection) 의존성 주입(DI, Dependency Injecti..