강한결합은 클래스와 객체가 서로 강하게 의존하고 있는 것이다.
강한결합의 특징
하나의 객체를 변경하게 되면 다른 객체또한 변경을 요구하게되어 변경점들을 확인하고 쉽게 놓칠 수 있다.
결합이 강하게 되어있어 결합이 되어있지 않으면 사용을 할 수 없다.
new를 선언할 때 마다 컴퓨터 메모리를 사용하게 되는데 비교적 강한 결합에서 new를 더 많이 사용해 메모리를 많이 사용한다.
느슨한결합은 객체들간에 결합이 되어있긴 하지만 느슨하게 되어 있는 것을 말한다. 다른의미로 크래스와 객체간의 의존성을 줄이는 것을 말한다.
느슨한결합의 특징
클래스/클래스를 느슨하게 결합되어 새로운 기능을 개발하거나 기존기능ㅇ르 수정하고 확장하는게 쉽다.
코드의 유지보수가 쉽다.
테스트 대역으로 치환하기가 쉬워서 유닛테스트가 용이하다.
DI(의존성주입)으로 얻을수 있는 싱글톤 패턴의 장점
new를 한번으로 모든 곳에서 사용가능하여 불필요한 메모리낭비를 줄일 수 있다.
강하게 결합되어 있는 상태에서 느슨한 결합으로 풀리게된다.
의존성주입이란?
강한결합을 느슨한 결합으로 전환시키는 방법이다, IoC기술중 하나이다.
!의존성주입이면 싱글톤 패턴일까? 그것은 아니다, new를 안에서 밖으로 빼주면서 싱글톤 패턴이 된 것은 맞지만 의존성 주입이라는 것은 밖에서 안으로 넣어주는 것이라 같은 것이라고는 할 수 없다.