인터페이스 분리 원칙: Interface Segregation Principle인터페이스 분리 원칙(ISP)이란 객체는 자신이 호출하지 않는 메서드에 의존하지 않아야 한다는 원칙입니다.ISP의 핵심 키워드는 다음과 같습니다.작은 인터페이스: 작고 구체적인 인터페스로 분리클라이언트: 인터페이스를 사용하는 객체응집력: 인터페이스와 구현 클래스의 높은 응집력의존성 최소화: 불필요한 메서드 의존성 제거ISP는 인터페이스를 작고 특정한 역할을 수행하도록 분리합니다.즉, 클라이언트가 자신에게 필요하지 않은 메서드가 종속되지 않도록 하는 것입니다. ISP를 설명하기 위해 간단한 예제를 보겠습니다. 요구사항스마트폰 최신 기종 S24와 오래 된 S2 기종이 구현해야 한다.통화, 메시지는 스마트폰 일반 기능이다.S24는..
Spring/Spring Framework
리스코프 치환 원칙: Liskov Subsitution Principle리스코프 치환 원칙은 다음과 같이 정의할 수 있습니다.서브 타입은 언제나 자신의 수퍼 타입으로 교체할 수 있어야 한다.클래스의 경우 하위 클래스는 상위 클래스의 한 종류여야 한다.인터페이스인 경우 구현 클래스는 인터페이스를 지켜야 한다. 리스코프 치환 원칙은 코드의 재사용성, 확장성, 유지보수성을 높이는 데 중요한 역할을 합니다.해당 원칙의 핵심 키워드는 다음과 같습니다.수퍼 타입: 부모 클래스, 서브타입이 상속받는 클래스를 의미한다.서브 타입: 자식 클래스, 부모 클래스의 특성을 상속받아 확장하거나, 구체화 한 타입을 의미한다.교체: 부모 클래스의 인스턴스를 자식 클래스로 대체해도 기능에 문제가 없어야 한다.리스코프 치환 원칙은 올..

단일 책임의 원칙: Single Responsibility Principle단일 책임의 원칙 핵심 키워드는 다음과 같습니다.클래스는 단 한 개의 책임을 가져야 한다. 클래스를 변경하는 이유는 단 한 개여야 한다. 누가 해당 메서드의 변경을 유발하는 사용자(Actor) 인가?단일 책임 원칙의 개념은 문장 자체로는 이해하기 쉽지만, 이를 구체적으로 적용하여 설계하는 건 제 입장에서 이해하기가 어려웠습니다. 초기 단계부터 명확한 책임을 도출하기 어려우며, 개발 과정 중 요구사항이 변경되면 이에 따라 클래스의 책임도 변하여 SRP 원칙을 유지하기 어렵습니다. 단순한 예제부터 단계 별로 단일 책임 원칙을 설명하려고 합니다. 저의 주관적인 생각이 들어가기도 해서 틀린 부분이 있다면 지적해 주시면 감사하겠습니다. 단..

개방 폐쇄 원칙: Open Close Principle개방 폐쇄 원칙의 핵심 키워드는 다음과 같습니다.확장에는 열려 있고, 변경에는 닫혀 있다.기능을 추가할 때, 기존 코드를 변경하지 않는다.개방 폐쇄 원칙은 모듈의 확장과 변경을 관리하는데 용이 하며, 기능이 추가되어도 기존 코드를 변경하지 않습니다.해당 원칙의 주요 개념을 풀어쓰면 다음과 같습니다.확장: 새로운 타입(클래스)을 추가하여 새로운 기능(요구사항)을 구현할 수 있어야 한다.변경: 새로운 클래스가 추가되어도, 기존 코드를 호출하는 상위 모듈이 수정되지 않아야 한다.OCP를 설명하기 위해 간단한 예제를 통해 설명하겠습니다. 요구사항카드 결제 시스템을 만들고자 한다.결제를 지원하는 카드는 신한카드 하나만 있다. 우리카드 결제 방식이 추가되어 구현..

의존성 역전 원칙: Dependency Inversion Principle의존성 역전의 원칙은 다음과 같이 정의할 수 있습니다.상위 수준 모듈은 하위 수준 모듈의 세부 사항에 의존해서는 안됩니다.하위 수준 모듈은 상위 수준 모듈에 정의된 추상 타입에 의존해야 합니다.의존성 역전의 원칙은 모듈 간 의존성을 낮추고, 유연성과 유지보수성을 향상시킵니다.해당 원칙의 주요 개념을 요약하자면 다음과 같습니다.상위 모듈: 비즈니스 로직이나 주요 기능을 정의하는 모듈 (ex Controller)하위 모듈: 구체적인 구현을 포함하는 모듈 (ex Service, Repository)추상 타입: 인터페이스나 추상 클래스를 통해 상위 모듈과 하위 모듈 간의 의존성을 정의DIP를 설명하기 위해 간단한 예제를 통해 설명하겠습니다..

스프링 프레임워크(Spring framework) 스프링(Spring)이란? 한마디로 정의하면 "엔터프라이즈용 Java 애플리케이션 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크"라고 할 수 있다. 주로 기업에서 동적인 웹 서비스를 운영하기 위해 사용된다. 스프링이 등장하기 이전 Java 애플리케이션애플리케이션 개발을 EJB(Enterprise Java Bean)가 담당하였다. 비즈니스 로직을 구현하기 위해 기술 자체에 대한 선수 지식이 필요했으며 구현하는 기술 자체가 복잡하고 어려웠었다. 그러나, 스프링이 탄생함으로써 이러한 문제를 해결하였고 개발 초기 기본적인 설정과 적용시킬 기술들만 잘 선택한다면 기술보다 애플리케이션 로직 자체에 집중하며 비즈니스 로직을 구현할 수 있게 된다. 오픈..