cgy12306
[JAVA] 객체 지향의 설계 5원칙 - SOLID 본문
SRP
SRP(Single reponsibility principle, 단일 책임 원칙) : 한 클래스는 하나의 책임만 가져야 한다.
- SRP 위배되는 예
class 사람 {
final static Boolean 남성 = true;
final static Boolean 여성 = false;
boolean 성별;
void 군대(){
if(this.성별 == 남성) {
// 군대를 간다
}
else{
// 군대를 가지 않는다.
}
}
}
- SRP 원칙 위배하지 않는 경우
abstract class 사람 {
abstract void 군대();
}
class 남성 extends 사람{
void 군대(){
// 군대를 간다.
}
}
class 여성 extends 사람{
void 군대(){
// 군대를 가지 않는다.
}
}
OCP
OCP(Open/closed principle,개방 폐쇄 원칙) : 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- OCP 위배되는 경우
- OCP 원칙 적용
상위 클래스 또는 인터페이스를 중간에 둠으로써 다양한 객체가 생긴다 해도 행위에는 영향을 미치지 않음
LSP
LSP(Liskov subsititution principle, 리스코프 치환 원칙) : 서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다. 즉, 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는 데 문제가 없어야 한다.
- LSP 원칙 위배 (계층도/조직도)
- LSP 원칙 적용(분류도)
ISP
ISP(Interface segregation principle, 인터페이스 분리 원칙) : 클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다.
- ISP 원칙 위배
public interface sports {
void swimmming();
void throwing();
}
public class swim implements sports {
public void swimming() {}
public void throwing() {}
}
swimming()만 하고 싶지만 sports에 throwing()도 구현해줘야 함.
- ISP 원칙 적용
public interface Swim {
void swimmming();
}
public interface Throw{
void throwing();
}
public class swim implements Swim {
void swim(){}
}
DIP
- DIP 원칙 위배
- DIP 원칙 적용
스노우타이어는 계절이 바뀌면 일반 타이어로 바꿔야 하는데 교체할 때 자동차는 그 영향에 노출돼 있음. 그래서 추상화된 타이어 인터페이스에만 의존하게 함으로써 스노우타이어가 다른 타이어로 변경돼도 자동차는 영향을 받지 않는 형태로 구성됨
출처 : 스프링 입문을 위한 자바 객체 지향의 원리와 이해
'Programming > JAVA' 카테고리의 다른 글
[JAVA] 객체 지향의 4대 특성 (0) | 2022.01.03 |
---|---|
[JAVA] JAVA 작동 원리 (0) | 2022.01.03 |
Comments