•
개방 폐쇄 원칙(Open-Closed Principle-OCP)
◦
클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
•
높은 응집도와 낮은 결합도(High Coherence and low coupling)
◦
응집도가 높다는 것은 하나의 모듈이 하나의 책임 또는 하나의 관심사에 집중되어 있다는 의미.
◦
변화가 일어날 때 해당 모듈에서 변하는 부분이 크다. ⇒ 변경 비용이 적게 든다.
◦
책임과 관심사가 다른 모듈과는 낮은 결합도, 즉 느슨하게 연결된 형태를 유지하는 것이 바람직하다.
•
전략 패턴
◦
자신의 기능 맥락(context)에서, 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴
package tobyspring.hellospring;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sort {
public static void main(String[] args) {
List<String> scores = Arrays.asList("z", "b", "spring", "java");
Collections.sort(scores, (o1, o2) -> o1.length() - o2.length());
scores.forEach(System.out::println);
}
}
Java
복사
•
제어의 역전(Inversion of Control)
◦
제어권 이전을 통한 제어관계 역전 - 프레임워크의 기본 동작 원리