SOLID(객체지향언어를 이용해서 좋은 클래스를 설계하기 위한 5가지 원칙)
SRP(Single Responsibility Principle - 단일책임의 원칙)
- 한 클래스는 하나의 책임(기능)만 적용할 수 있도록 설계한다. 변경을 할 때 수정할 내용이 거의 없으면 단일책임원칙을 잘 적용한 것이다(캡슐화).
- 계층을 나누는 이유가 이러한 이유 때문이다.
- MVC패턴의 예
- ex) 무언가를 등록하는 클래스라면 이 클래스는 등록관련 문제를 수정할 때만 수정돼야 한다.
OCP(Open Close Principle - 개방 폐쇄의 원칙)
- 소프트웨어는 확장(기능추가)에는 열려있어야하고 변경(기존에 실행이 잘 되는 코드에는)에는 닫혀있어야 한다.
- 기존의 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.
- 정책이나 요구사항이 변경되어도 코드가 수정되면 안 된다.
- 다형성을 이용해서 인터페이스와 구현을 분리한다.
LSP(Liskov substitution principle, 리스코프 치환 원칙)
- 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
ISP(Interface Segregation Principle, 인터페이스 분리 원칙)
- 구현체 스스로가 사용하지 않는 기능에 영향받지 않아야 한다(하나의 기능에 집중해야 한다).
- 인터페이스 분리 원칙은 인터페이스는 자신의 쓰임새와 사용에 맞게끔 분리해야 한다는 원칙이다.
DIP(Dependency Inversion Principle - 의존관계 역전의 원칙)
- 개발을 할 때는 추상에 의존해야 한다. 즉 상위 인터페이스를 이용해서 개발하도록 작성해야 한다.
- 구현된 클래스(하위클래스)에 의존하면 안 된다(추상화에 의존해야 하지 하위클래스를 직접 쓰지 말아야 한다).
=> 변화가 없는 클래스에 의존해야 한다.
- 의존성 주입(DI) 활용하기
ex) CustomerDAO dao = new MybatisCustomerDAO(); → XX
CustomerDAO dao; → O
'정리' 카테고리의 다른 글
제네릭(Generic)? (0) | 2023.04.18 |
---|---|
컬렉션 프레임워크(collection framework) (0) | 2023.04.16 |
Oracle (0) | 2023.04.11 |
이너조인과 아우터조인 (0) | 2023.04.10 |
AOP (Aspect Oriented Programming, 관점 지향 프로그래밍) (0) | 2023.04.07 |
댓글