티스토리 뷰
스프링 컨테이너 (결합도와 유지보수성)
결합도
소프트웨어 코드의 한 요소가 것과 얼마나 강력하게 연결되어 있는지를 나타내는 말
한 객체에서 다른 객체의 메서드를 호출하거나 멤버 변수에 접근할 때 연결되어 있다라고 표현함.

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");
…
'It' 카테고리의 다른 글
문자열 접합, 파이썬 문자열 합치기 (0) | 2022.11.06 |
---|---|
튜닝활용, JOIN 정리 (0) | 2022.10.26 |
오라클 SQL함수 (0) | 2022.10.22 |
C# 한줄에 두수 입력하여 합구하기 (0) | 2022.10.20 |
JSP (DB값 검색 / DB값 수정/ DB값 불러오기) (12/3) 해당하는 코드정보 불러오기 (0) | 2022.10.18 |