-
객체지향 SOLID 원칙LANGUAGE/JAVA 2014. 10. 10. 17:56
1. SRP(Single Responsibility Principle) 단일 책임 원칙
객체로 정의한 대상은 하나의 책임만 가지도록 해야한다는 원칙.
더 뺄 것도 더할것도 없는 상태로 만들어 주는 것.
(단일 객체의 변경 사항으로 인해 그와 관계 없는 부분에서 수정이 불가피해지거나 연관성 없는 부분까지 고려해야하는 상황이 발생하지 않도록)
2. OCP(Open Closed Principle) 개방 폐쇄 원칙
확장에는 열려있고 수정에는 닫혀있는 구조로 설계되거나 프로그래밍 되어야한다는 원칙.
객체의 본래 의미는 변하지 않도록 하면서 변경이나 추가가 필요한 경우에는 언제든지 확장을 통해 기존 기능이나 이름을 재사용할 수 있도록 하는 것이다. (추가적인 기능이나 변경사항에 수정해서 사용하도록 하는 것이 아니라 확장을 통해서 원하는 결과를 얻을 수 있도록 한다.)
공통적인 속성은 하나의 인터페이스나 추상클래스로 디자인하고 이것을 상속하기.
3. LSP(Liskov Substitution Principle) 리스코프 치환 원칙
부모객체를 상속한 자식객체는 반드시 부모객체의 인터페이스를 모두 구현해야 한다는 원칙.
자식(Sub-type)은 부모(Super-type)로 치환될 수 있다.
4. ISP(Interface Segregation Principle) 인터페이스 분리 원칙
사용자에게 제공되어지는 인터페이스는 최소한의 단위로 분할되어 제공되어져야한다는 원칙.
예를 들면 은행관련 입금, 송금, 출금 모듈을 만들었을 경우 골라서 사용할 수 있어야 한다.
5. DIP(Dependency Inversion Principle) 의존성 역전 원칙
높은 수준의 객체가 보다 하위수준의 객체에 의존성을 가지지 않아야 하며, 반대로 하위 수준의 객체가 보다 높은 추상화 수준의 객체에 의존해야 한다는 원칙.
추상클래스나 파생클래스는 오직 추상클래스만을 참조해야한다 (???) 의존의 대상이 추상클래스나 인터페이스만? 왜?
[출처] 객체 지향 5원칙 SOLID|작성자 쏭아리
'LANGUAGE > JAVA' 카테고리의 다른 글
[Java] 디자인 패턴 설명 링크 (0) 2014.06.19 java primitive data type + 연산자 (0) 2014.06.19 session 삭제 시점시 처리. (0) 2014.05.27 [JAVA] JVM 메모리 구조 (0) 2014.04.24 [JAVA] 오버로딩, 오버라이딩 (0) 2014.04.14