1.단일 책임 원칙(SRP, Single Responsibility Principle)
클래스를 변경해야 할 이유는 단 한가지여야 한다.
이 원칙은 클래스 응집도와 관련이 있다. 책임이 하나뿐인 응집도 높은 클래스를 만든다면 이 원칙을 충족시키는 것이다.
2.개방 폐쇄 원칙(OCP, Open-Closed Principle)
소프트웨어의 구성요소는 확장에 관해서는 열려있어야 하고 변경에 대해서는 닫혀있어야 한다.
클래스 상속을 생각해보면 부모 클래스가 닫힌 부분이고 자식 클래스는 열린 부분이다. 부모 클래스를 굳이 변경하지 않더라도, 자식 클래스의 행동을 변화시키면 확장할 수 있다.
3.리스코프 치환 원칙(LSB, Liskov Substitution Principle)
파생 자료형은 기본 자료형과 치환 할 수 있어야한다.
부모 클래스로 치환한 상태에서도 정상 작동해야 한다라는 것이다.
부모 클래스에서 자식 클래스로 무리하게 다운캐스트해야 할 경우에는 리스코프 치환 원칙에 위반된다. 클래스는 항상 부모 클래스 그대로의 상태에서 작동해야 한다. 상속 관계가 복잡해지면 이 원칙을 위반하는 클래스가 만들어질 가능성이 커진다.
4.인터페이스 분리 원칙(ISP, Interface Segregation Principle)
클라이언트가 사용하지 않는 멤버 함수의 의존을 클라이언트에게 강요하면 안된다.
클래스는 최소한의 멤버 함수로만 구성되어야 한다.
5.의존 관계 역전 원칙(DIP, Dependency Inversion principle)
상위 모듈은 하위 모듈에 의존하지 않는다. 두 모듈 모두 별도의 추상화된 것에 의존한다.
상위 모듈이란 사용하는 측, 하위 모듈이란 사용되는 측의 모듈을 가르킨다. 보통 상위 레벨 모듈은 하위 레벨 모듈을 이용해 만들어진다.
그런데 상위 모듈이 하위 모듈에 직접 결합해 버리면 하위 모듈의 변경이 상위 모듈에 영향을 미친다. 이때는 상위 모듈과 하위 모듈의 관계를 역전시켜 소결합하는 것이 좋다.
의존 관계를 역전시키려면, 일단 사용자 측에 있는 상위 레벨 모듈의 요구에 맞춰 추상 인터페이스를 작성한다. 생성한 추상 인터페이스를 거쳐 하위 모듈을 사용한다. 이때 추상 인터페이스는 반드시 상위 레벨의 모듈이 소유해야한다.
'개발관련 > ETC..' 카테고리의 다른 글
Apple revoke token 처리 (0) | 2022.07.09 |
---|---|
AWS CodeBuild, CodeDeploy (0) | 2019.07.25 |
javascript> Drag & Drop 파일 읽기 (0) | 2018.12.05 |
C# ms referencesource 소스 (0) | 2018.03.29 |
링크>웹 개발자가 되는 로드맵 (0) | 2017.08.11 |