안녕하세요.
오늘은 자바의 객체 지향의 특징과 더불어 좋은 객체 지향 설계를 위한 5가지 원칙인 solid에 대해 정리해보겠습니다.
객체 지향의 특징 :
추상화 : 실제 세상을 객체화하는게 아니라 필요한 정보만을 중심으로 간소화하는 것을 의미합니다.
캡슐화 : 객체에 필요한 데이터나 기능(메서드)을 책임이 있는 객체에 그룹화 시켜줍니다.
상속 : 상위 클래스의 기능을 하위 클래스가 사용할 수 있는 것입니다. (중복되는 코드 재사용)
다형성 : 객체간 관계를 유연하게 해주는 특징입니다.
자바에서 가장 중요한 부분은 다형성입니다.
다형성은 역할과 구현으로 나뉩니다. (유연해지며 변경도 편리합니다.)
역할 : 인터페이스
구현 : 구현객체(impl)
다형성의 본질 :
클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있습니다.
그러기 위해서는 인터페이스(역할) 부분을 안정적으로 설계하는 것이 중요합니다.
예를 들어
눈길에 가야할 일이 생겼을때, 자동차의 일반타이어를 스노우타이어로 교체하여
눈길을 무사히 갈수 있게 된다면 스노우타이어만의 교체로 인해 눈길을 갈 수 있게 문제가 해결되게 되겠죠!
Solid – 좋은 객체 지향 설계의 5가지 원칙
단일 책임 원칙(SRP) – 한 클래스는 하나의 책임만 가져야 한다.
개방-폐쇄 원칙(OCP) - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. (스프링 지원 필요)
리스코프 치환 원칙(LSP) - 프로그램의 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
인터페이스 분리 원칙(ISP) - 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
의존관계 역전 원칙(DIP) - 프로그래머는 '추상화(역할)에 의존해야지, 구체화에 의존하면 안된다.' 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
OCP와 DIP가 중요도가 높은 원칙입니다.
'JAVA' 카테고리의 다른 글
Apache Log4j 보안이슈 대응에 대한 문의 (0) | 2021.12.21 |
---|---|
JMSAppender 사용여부 확인 방법!! (+2.x 버전 조치사항 방법!!) (0) | 2021.12.21 |
[Java] 엑셀 다운로드 기능 구현!! (영상 有) (6) | 2021.11.27 |
[Java&Jsp] 엑셀 데이터 추출 후, 뷰페이지 확인 방법!! (0) | 2021.10.22 |
[JAVA] RSA 암호화 방식 적용 방법 (0) | 2021.09.02 |
댓글