티스토리 뷰

스프링 컨테이너 (결합도와 유지보수성)

결합도

소프트웨어 코드의 한 요소가 것과 얼마나 강력하게 연결되어 있는지를 나타내는 말

한 객체에서 다른 객체의 메서드를 호출하거나 멤버 변수에 접근할 때 연결되어 있다라고 표현함.

package polymorphism1;

public class SamsungTV {

public void powerOn(){

System.out.println("SamsungTV---전원을 켠다.");

}

public void powerOff(){

System.out.println("SamsungTV---전원을 끈다.");

}

public void volumeUp(){

System.out.println("SamsungTV---소리를 올린다.");

}

public void volumeDown(){

System.out.println("SamsungTV---소리를 내린다.");

}

}

package polymorphism1;

public class LgTV {

public void turnOn(){

System.out.println("LgTV---전원을 켠다.");

}

public void turnOff(){

System.out.println("LgTV---전원을 끈다.");

}

public void soundUp(){

System.out.println("LgTV---소리를 올린다.");

}

public void soundDown(){

System.out.println("LgTV---소리를 내린다.");

}

}

삼성TV에서 LG TV로 변경하려 한다면?

많은 부분 수정이 발생함.

다형성을 이용해 결합도 떨어뜨려야

public class TVUser {

public static void main(String[] args) {

//SamsungTV tv = new SamsungTV();

//tv.powerOn();

//tv.volumeUp();

//tv.volumeUp();

//tv.powerOff();

LgTV tv = new LgTV();

tv.turnOn();

tv.soundUp();

tv.soundDown();

tv.turnOff();

}

}

다형성을 이용한 결합도 떨어뜨리기

가장 쉬운 방법은 다형성을 이용하는 것.

예를 들면 인터페이스를 정의하고 구현하는 클래스를 만드는 것

public interface TV {

public void powerOn();

public void powerOff();

public void volumeUp();

public void volumeDown();

}

public class SamsungTV implements TV {

public void powerOn(){

System.out.println("SamsungTV---전원을 켠다.");

}

public void powerOff(){

System.out.println("SamsungTV---전원을 끈다.");

}

public void volumeUp(){

System.out.println("SamsungTV---소리를 높인다.");

}

public void volumeDown(){

System.out.println("SamsungTV---소리를 낮춘다.");

}

}

public class LgTV implements TV {

public void setSpeaker(Speaker speaker) {

this.speaker = speaker;

}

public void powerOn(){

System.out.println("LgTV---전원을 켠다.");

}

public void powerOff(){

System.out.println("LgTV---전원을 끈다.");

}

public void volumeUp(){

System.out.println("LgTV---소리를 높인다.");

}

public void volumeDown(){

System.out.println("LgTV---소리를 낮춘다.");

}

}

public class TVUser {

public static void main(String[] args) {

TV tv = new SamsungTV();

tv.powerOn();

tv.volumeUp();

tv.volumeDown();

tv.powerOff();

}

}

Factory 패턴을 이용한 결합도 떨어뜨리기

public class BeanFactory {

public Object getBean(String beanName) {

if (beanName.equals("samsung")) {

return new SamsungTV();

} else if (beanName.equals("lg")) {

return new LgTV();

}

return null;

}

}

BeanFactory factory = new BeanFactory();

TV tv = (TV)factory.getBean("lg");

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함