[Design Pattern] 디자인 원칙
-
애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다.
-
구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.
-
상속보다는 구성을 활용한다.
-
서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.(상호작용 하지만 서로에 대해 잘 몰라야 한다.)
-
클래스는 확장에 대해서는 열려있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다.(Open-Closed Principle(OCP))
-
추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다.
-
의존성 뒤집기 원칙(Dependency Inversion Principle)
-
어떤 변수에서 구상 클래스에 대한 레퍼런스를 저장하지 말자.
-
구상 클래스에서 유도된 클래스를 만들지 말자.
-
베이스 클래스에 이미 구현되어 있던 메소드를 오버라이드 하지 말자.
-
-
-
최소 지식 원칙 - 정말 친한 친구하고만 얘기하라.(=데메테르의 법칙(Law of Demeter))
-
어떤 메소드에서든 다음 네 종류 객체 메소드만 호출
1) 객체 자체
2) 메소드에 매개변수로 전달된 객체
3) 그 메소드에서 생성하거나 인스턴스를 만든 객체
4) 그 객체에 속하는 구성요소
-
-
헐리우드 원칙 - 먼저 연락하지 마라.
-
클래스를 바꾸는 이유는 한가지 뿐이어야 한다. -> 한 역할은 한 클래스에서만 맡아야 한다.