객체 지향과 디자인 패턴 ‐ SOLID(O) - dnwls16071/Backend_Study_TIL GitHub Wiki

📚 개방 폐쇄 원칙(Open-Closed Principle)

  • 기능을 변경하거나 확장할 수 있으면서도 기능을 사용하는 다른 코드에선 수정하지 않는다.

개방 폐쇄 원칙 구현1: 상속 이용

상속은 상위 클래스 기능을 그대로 사용하면서 하위 클래스에서 일부 구현을 오버라이딩 할 수 있는 방법을 말한다.

public class ResponseSender {

	private Data data;
	public ResponseSender(Data data) {
		this.data = data;
	}

	public Data getData() {
		return data;
	}

	public void send() {
		sendHeader();
		sendBody();
 	}

        // 헤더부 전송
	protected void sendHeader() {
		// ...
	}

        // 바디부 전송
	protected void sendBody() {
		// ...
	}
}
public class ZippedResponseSender extends ResponseSender {

	public ZippedResponseSender(Data data) {
		super(data);
	}

	@Override
	protected void sendBody() {
		// ...
		// 메서드 오버라이딩(상속 활용)
	}

	@Override
	protected void sendHeader() {
		// ...
		// 메서드 오버라이딩(상속 활용)
	}
}

개방 폐쇄 원칙이 깨질 때 주요 증상