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