[객체 지향 프로그래밍 입문 - 인프런] 상속보단 조립

김성혁·2021년 2월 6일
0
post-thumbnail

상속은 상위 클래스의 기능을 재사용, 확장하는 방법으로 활용하나..

→ 상속을 통한 기능 재사용 시 단점 발생

  • 상위 클래스 변경이 어려움

    상위 클래스 변경의 여파가 계층도에 따라 하위 클래스로 영향을 줌으로

    잘못 변경 시 하위 클래스들이 모두 비정상적으로 작동할 수 있음

  • 클래스의 불필요한 증가

  • 상속 오용

상속의 단점 해결 → 조립

조립(Composition)

  • 여러 객체를 묶어서 더 복잡한 기능을 제공
  • 보통 필드로 다른 객체를 참조하는 방식으로 조립 또는 객체를 필요 시점에 생성/구함
public class FlowController {
	private Encryptor encryptor = new Encryptor(); // 필드로 조립

	public void process() {
		...
		byte[] encryptedData = encryptor.encrypt(data);
		...
	}
}

암호화 기능이 필요하다면 암호화 기능을 제공하는 클래스를 상속받아서 구현하는 것이 아니고
필드로 객체를 참조하여 조립

상속보다는 조립(Composition over inheritance)

  • 상속하기에 앞서 조립으로 풀 수 없는지 검토
  • 진짜 하위 타입인 경우에만 상속 사용

0개의 댓글