SOLID 원칙

출처: innofied.com

SOLID 원칙

 

1. 단일 책임 원칙 - SRP(Single Responsibility Principal)

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

    ex) Student 객체는 학생의 기능(책임)만 해야한다. 

 

2. 개방 폐쇄 원칙 - OCP(Open-Closed Principal)

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

내 생각에는 디자인 패턴에서 가장 주요한 원칙인듯? 

    ex) 단위테스트시 Git을 사용해야 한다면 직원들은 각자의 Git을 구현한(각자의 ID로 구현한) 객체를 주입하도록 설계하면 된다.

 

3. 리스코프 치환 원칙 - LSP(Liskov Substitution Principal)

부모 클래스와 자식 클래스 사이의 행위가 일관성이 있어야 한다는 의미.

    ex) 원숭이 is a kind of 포유류. 간단하게 포유류의 '나는 포유류다'라는 함수를 원숭이클레스가 재정의하지 않으면 된다.

 

4. 의존 역전 원칙 - DIP(Dependency Inversion Principal)

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

    ex) 공격 인터페이스(변하지않는것)에 미사일공격 클레스(변하는것), 레이저공격 클레스(변하는것)로 의존성 주입.

    절차지향언어는 추상모듈이 구체적모듈을 호출하기 때문에 객체지향언어에서는 이를 역전시켜야 더 나은 설계가 되는 것.

 

5. 인터페이스 분리 원칙 - ISP(Interface Segregation Principal)

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

    ex) 프린터기는 복합기의 프린트 기능만 특화되면되고, 복사기는 복합기의 복사 기능만 특화되면 됨.

    SRP를 만족하더라고 ISP를 반드시 만족한다고 볼 수 없다.

 

 

이 글을 공유하기

댓글

Designed by JB FACTORY