justgo_developer

SOLID 원칙 본문

IT/자바

SOLID 원칙

다날92 2021. 2. 6. 19:46
728x90
반응형

1.SRP(Single Reponsibility Principle) : 단일 책임 원칙

객체는 단 하나의 책임만 가져야 한다.

객체에 책임을 할당할 떄는 어떤 객체보다도 작업을 잘 할 수 있는 객체에 책임을 할당해야한다.

모든 코드를 테스트하는 문제를 해결하려면 한 클래스에 너무 많은 책임을 부여하지 말고 단 하나의 책임만 수행하도록 해 변경 사유가 될수 있는 것을 하나로 만들어야 한다. 이를 책임 분리라 한다.

예시)Student 클래스가 수강과목추가/조회, 데이터베이스 저장, 읽는작업, 성적표 출력 등 너무 많은 책임을 수행한다면, 수강과목을 추가하고 조회하는 책임만 수행하도록 하는것이 SRP 따르는 설계이다. 나머지는 다른 클래스가 더 잘 할수 있는 여지가 있다.

 

2. OCP(Open Closed Principle) : 개방 폐쇄 원칙

기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.

새로운 출력 매체를 표현하는 클래스를 추가하게 하고 이러한 변경이 있더라도 기존의 클래스가 영향을 받지 않게 하려면 개별적인 클래스를 처리하도록 하지 않고 인터페이스에서 구체적인 출력 매체를 캡슐화해 처리하도록 해야한다.

 

3. LSP(Liskov substitution principle) : 리스코프 치환 원칙

LSP는 일반화 관계에 대한 이야기며 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.

LSP를 만족하면 프로그램에서 부모 클래스의 인스턴스 대신에 자식 클래스의 인스턴스로 대체해도 프로그램의 의미는 변화되지 않는다. 이를 위해 부모클래스와 자식 클래스 사이는 행위가 일관되어야 한다.

LSP 만족하는 간단한 방법은 재정의 하지 않는것이다.

 

4. DIP(Dependency Inversion Principle) : 의존 역전 원칙

의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 원칙이다.

DIP를 만족하려면 어떤 클래스가 도움을 받을 때 구체적인 클래스보다는 인터페이스나 추상 클래스와 의존 관계를 맺도록 설계해야한다. DIP를 만족하는 설계는 변화에 유연한 시스템이 된다.

인터페이스 = 변하지 않는것, 구체 클래스 = 변하기 쉬운 것

 

5. ISP(Interface Segragation Principle) : 인터페이스 분리 원칙

인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙이다.

 

 

 

 

728x90
반응형