티스토리 뷰
tv1 패키지
: // 결합도가 높은 프로그램은 좋은 프로그램X 수정시 모두 갈아엎어야함
// 응집도가 높은 프로그램과 다르다.
package tv1;
public class LgTv {
public void turnOn() {
System.out.println("LG TV-전원을 켠다");
}
public void turnOff() {
System.out.println("LG TV-전원을 끈다");
}
public void soundUp() {
System.out.println("LG TV-소리를 높인다");
}
public void soundDown() {
System.out.println("LG TV-소리를 줄인다");
}
}
package tv1;
public class SamsungTv {
public void powerOn() {
System.out.println("Samsung TV-전원을 켠다");
}
public void powerOff() {
System.out.println("Samsung TV-전원을 끈다");
}
public void volumeUp() {
System.out.println("Samsung TV-소리를 높인다");
}
public void volumeDown() {
System.out.println("Samsung TV-소리를 줄인다");
}
}
package tv1;
//결합도가 높다
public class TvUser {
public static void main(String[] args) {
String in=args[0]; // lg or samsung를 입력
if(in.equals("lg")) {
LgTv tv=new LgTv();
tv.turnOn();
tv.turnOff();
tv.soundUp();
tv.soundDown();
}else if(in.equals("samsung")) {
SamsungTv tv=new SamsungTv();
tv.powerOn();
tv.powerOff();
tv.volumeUp();
tv.volumeDown();
}else {
System.out.println("error");
}
}
}
tv2 패키지
package tv2;
public class LgTv implements Tv{
@Override
public void powerOn() {
System.out.println("LG TV-전원을 켠다");
}
@Override
public void powerOff() {
System.out.println("LG TV-전원을 끈다");
}
@Override
public void soundUp() {
System.out.println("LG TV-소리를 높인다");
}
@Override
public void soundDown() {
System.out.println("LG TV-소리를 줄인다");
}
}
package tv2;
public class SamsungTv implements Tv{
@Override
public void powerOn() {
System.out.println("Samsung TV-전원을 켠다");
}
@Override
public void powerOff() {
System.out.println("Samsung TV-전원을 끈다");
}
@Override
public void soundUp() {
System.out.println("Samsung TV-소리를 높인다");
}
@Override
public void soundDown() {
System.out.println("Samsung TV-소리를 줄인다");
}
}
package tv2;
public interface Tv {
public void powerOn();
public void powerOff();
public void soundUp();
public void soundDown();
}
package tv2;
//다형성을 이용해서 결합도를 낮춤
public class TvUser {
public static void main(String[] args) {
String in=args[0]; // lg or samsung를 입력 //Run as로
Tv tv=null; //부모의 참조변수
if(in.equals("lg")) {
tv=new LgTv();
}else if(in.equals("samsung")) {
tv=new SamsungTv();
}else {
System.out.println("error");
}
tv.powerOn();
tv.powerOff();
tv.soundUp();
tv.soundDown();
}
}
댓글