OOP는 정말 확장만 고려하면 될까
- 객체지향 프로그래밍(OOP)은 개방-폐쇄 원칙과 의존성 역전 원칙을 통해 확장성과 느슨한 결합을 강조했지만, 확장을 제한하는 언어적 문법은 부족했습니다. 🔄
- 자바는
sealed 클래스/인터페이스를 도입하여 permits 키워드로 허용된 하위 타입을 명시함으로써 임의의 확장을 방지하고 상속 계층을 제어할 수 있게 되었습니다. 🛡️
record는 불변 데이터 객체를 간결하게 정의하여 빈약한 도메인 모델 문제를 해결하고, 인스턴스 생성 후 데이터 변경을 막아 불변성을 보장합니다. 📝
sealed와 record는 패턴 매칭을 강화하여, switch 문에서 모든 가능한 타입을 명시적으로 처리하고 default 케이스 없이도 완전성을 보장할 수 있게 합니다. 🎯
- 자바의 패턴 매칭은
when 절을 활용한 가드 패턴 매칭과 instanceof 연산자에서 타입 캐스팅 보일러플레이트를 줄이는 등 다양한 형태로 발전하여 코드 가독성과 안정성을 높입니다. 💡