개발은 재밌어야 한다
article thumbnail
반응형

SOLID

https://blog.kakaocdn.net/dn/Qn8cY/btrsSv6Bud4/HsS9ku1012FY6IMKIxXw71/img.png

객체 지향 프로그래밍설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 두번째 원칙인 ORP(Open-Closed Principle)에 대해 알아보겠습니다.

https://viblo.asia/p/the-solid-principles-maGK7JVB5j2

Open-Closed Principle라는 뜻을 한국말 그대로 받아들이면 열려있으면서 닫힌 원칙이라는 말이 됩니다.

https://blog.kakaocdn.net/dn/c4D1OA/btrsWLAESYa/2wYGQelpP0g3BjZrRQfdwk/img.jpg

열려있으면서도 닫혀있다는게 무슨 소리인거지..

어렵게 생각할 수도 있지만 간단하게 생각하면 OCP는 매우 명확한 의미를 가집니다.

OCP에서의 Open은 확장에 대해서, Closed는 변경에 대해서 의미합니다. 즉, "확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."라는 뜻입니다.

개발적인 의미로는 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 뜻을 가지는 원칙입니다.

OCP의 목적은 클래스의 존재하는 기능의 변경 없이 해당 클래스의 기능을 확장시키는 것 입니다. 이로인해 사용중인 클래스의 변경으로 인한 버그 발생을 피할 수 있습니다.

 

 

위에는 자바 어플리케이션에서 JDBC에 대한 설계 구조입니다.

위의 Oracle, SQLServer(ms-sql)에 대한 각 드라이버인 OracleDriver와 SQLServerDriver를 보면 두개의 클래스 모두 java.sql.Driver에 implement를 통해 인터페이스에 구현체를 통해 구현된 클래스임을 알 수 있습니다.

각 구현된 DBMS의 Driver를 통해 connect()를 통해 url과 properties에 맞는 Connection객체를 통해 연결 할 수 있게 됩니다.

이처럼 Driver에 대한 확장성(OracleDriver, MysqlDriver, PostgreSQLDrvier, DB2Drvier, SqlServerDrvier......등등)에는 열려있고 해당 자바 어플리케이션에 대해서는 닫혀있어서 기존의 코드에 대한 수정은 폐쇄적이다(예를들어 MyDriver를 만들어 사용한다고해서 OracleDriver나 SQLserverDriver가 수정되지는 않는다)는 관점에서 설계하여 구현하는 것이 OCP원칙이 적용한 올바른 설계이다.

반응형
profile

개발은 재밌어야 한다

@ghyeong

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!