숙련 Spring 1주차
객체 지향 설계
SOLID 원칙
- 단일 책임 원칙 SRP(Single Responsibility Principle)
하나의 클래스는 하나의 책임만 가져야 한다.
public class User {
private String name; // 사용자 정보
public void login() { /* 로그인 기능 */ }
public void saveUser() { /* 데이터베이스 저장 기능 */ }
}
▼ 단일 책임 원칙 적용
public class User { /* 사용자 정보 관리 */ }
public class AuthService {
public void login(User user) { /* 로그인 기능 */ }
}
public class UserRepository {
public void saveUser(User user) { /* 데이터베이스 저장 */ }
}
- 개방 폐쇄 원칙 OCP(Open Closed Principle)
소프트웨어 요소는 확장에 대해 열려 있어야 하고 수정에 대해서는 닫혀 있어야 한다.
예) 새로운 도형이 추가될 때마다 AreaCalculator 클래스를 수정해야 됨
public class Shape {
public String type;
}
public class AreaCalculator {
public double calculate(Shape shape) {
if (shape.type.equals("circle")) {
return /* 원의 넓이 계산 */;
} else if (shape.type.equals("square")) {
return /* 사각형의 넓이 계산 */;
}
}
}
▼ 개방 폐쇄 원칙 적용
public interface Shape {
double calculateArea();
}
public class Circle implements Shape {
public double calculateArea() { return /* 원의 넓이 계산 */; }
}
public class Square implements Shape {
public double calculateArea() { return /* 사각형의 넓이 계산 */; }
}
public class AreaCalculator {
public double calculate(Shape shape) {
return shape.calculateArea();
}
}
- 리스코프 치환 원칙 LSP(Liskov Substitution Principle)
자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.
부모 클래스를 사용하는 곳에서 자식 클래스를 사용해도 프로그램의 동작에 문제가 없어야 된다.
- 인터페이스 분리 원칙 ISP(Interface Segregation Principle)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스로 분리해야 한다.
- 의존관계 역전 원칙 DIP(Dependency Inversion Principle)
구체적인 클래스에 의존하지 말고 인터페이스나 추상 클래스에 의존하도록 설계해야 한다.
'TIL' 카테고리의 다른 글
| TIL 241118 (0) | 2024.11.18 |
|---|---|
| TIL 241115 (1) | 2024.11.15 |
| TIL 241111 (0) | 2024.11.11 |
| TIL 241108 (0) | 2024.11.08 |
| TIL 241107 (0) | 2024.11.07 |