Back-end/JavaSpringBoot
응집도와 결합도
본투비곰손
2022. 7. 28. 21:46
728x90
좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다.
결합도
모듈(클래스)간의 상호 의존 정도를 나타내는 지표로써 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다.
응집도
하나의 모듈 내부에 존재하는 구성요소들의 기능적 관련성으로 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다.
1. 단일 책임 원칙
어떠한 클래스를 변경해야하는 이유는 한가지 뿐이어야 한다.
아래와 같이 절차지향적으로 코딩하면 유닛이 많아지면 else if가 점점 늘어나게 된다.
class Unit {
private String name;
private int speed;
public void attack() {
}
public void move(){
if(name.equals("저글링")){
speed+=3;
}else if(name.equals("탱크")){
if("탱크모드"){
speed=0;
}else {
speed = 10;
}
}else if(name.equals("정찰기")){
speed = 15;
"충돌" = false;
}
}
}
아래와 같이 각각의 클래스를 만들어서 move 매서드를 오버라이딩 하면 된다.
class "저글링" extends Unit {
public void move(){
this.speed +=3;
}
}
class "탱크" extends Unit {
public void move(){
if("탱크모드"){
speed = 0;
} else {
speed = 10;
}
}
}
class 정찰기 extends Unit{
public void "정찰기"(){
this.충돌 = false;
}
public void move(){
speed = 15;
}
}
728x90