느슨한 결합은 인터페이스의 중요한 특징 중 하나이다.
먼저 강력한 결합은 클래스 가의 호출이 정의된 것을 말한다.
class Computer
{
public void TurnOn()
{
Console.WriteLine("Computer : TurnOn");
}
}
class Switch
{
public void PowerOn(Computer machine)
{
machine.TurnOn();
}
}
결합이 강력하다면 유연성이 떨어진다는 약점이 있다.
Switch에 Computer가 아닌 Monitor를 연결한다고 생각해 보자.
class Monitor
{
public void TurnOn()
{
Console.WriteLine("Monitor : TurnOn");
}
}
class Switch
{
public void PowerOn(Monitor machine)
{
machine.TurnOn();
}
}
이 코드는 바로 위의 코드에서 Computer를 Monitor로 바꾼 것이다.
Switch의 코드가 바뀌어야 할 이유가 있을까?
코드가 엄청나게 길어진다면 하나하나 확인을 해 주면서 바꾸어 주어야 한다.
이래서 유연성이 떨어진다는 것이다.
이것의 보완책이 느슨한 결합이고, 이 느슨한 결합을 달성하는 수단은 인터페이스이다.
interface IPower
{
void TurnOn();
}
class Monitor : IPower
{
public void TurnOn()
{
Console.WriteLine("Monitor : On");
}
}
class Switch
{
public void PowerOn(IPower machine)
{
machine.TurnOn();
}
}
이렇게 결합을 해결할 수 있다.
모니터 클래스를 추가하고 해당 클래스를 스위치 클래스로 제어하고 싶다면 IPower 인터페이스를 상속받게 하기만 하면 된다.
스위치 클래스의 코드 또한 바꿀 이유가 없어진다.
물론 느슨한 결합이 강력한 결합보다 우월하다는 것은 아니다.
강제성도 없으니 그저 선택의 문제이다.
'C# > 책 정리' 카테고리의 다른 글
C# 정리 ) ref 예약어 (0) | 2021.12.11 |
---|---|
C# 정리 ) 구조체 (0) | 2021.12.10 |
C# 정리 ) 인터페이스 콜백 (0) | 2021.12.10 |
C# 정리 ) 인터페이스 의미 부여 (0) | 2021.12.09 |
C# 정리 ) 인터페이스 다형성 (0) | 2021.12.09 |
댓글