이 패턴은 여러 기준을 만들어 연결할 수 있다. 또한 하나의 조건은 내부적으로 여러 조건을 갖을 수 있으며 연결된 여러 조건들을 사용하여 객체를 검사할 수 있다.https://www.tutorialspoint.com/design_pattern/filter_pattern.htm Intercepting Filter Pattern Intercepting Filter Pattern은 중요 로직을 수행하기 전과 후에 처리해야 할 작업을 Filter로 만들고 이를 Chain으로 연결하여 사용하는 패턴이다. Filter는 연결된 순서로 실행되며 인증, 로깅, 검사 등의 Filter 만들고 필요한 로직의 어디에서나 재활용한다. 필요한 부분에서는 원하는 Filter들을 재조합하여 활용한다.https://www.tutor..
이 패턴은 Runtime 중에 행동이나 알고리즘을 교체할 수 있게 하는 것에 있으며 다양한 전략적인 Object를 만들고 상황에 맞는 전략을 선택할 수 있다.Bridge Pattern과 비슷한 듯 보이지만 Bridge Pattern은 구조 패턴이고 Strategy Pattern은 행동 패턴임이 다르다. 나도 둘이 거의 비슷한 느낌이 들지만 Bridge Pattern으로 행동에 해당하는 구현 부분을 분리하고 이를 Runtime에서 상황에 맞는 객체로 교체한다면 두 패턴을 혼용해서 사용했다고 생각했다.Netty의 Pipeline은 runtime에서 들어오는 데이터에 따라 언제 든지 교체가 가능한데 이 부분도 이 패턴이 사용됐다고 생각한다.https://www.tutorialspoint.com/design_p..
이 패턴의 중요한 점은 구현 클래스와 추상 클래스를 분리하는데 있다. 여기서 구현 클래스와 추상 클래스를 구분 짓는게 쉽지 않았다. 추상 클래스를 내가 만들려는 목적 클래스로 생각 한다면 구현 클래스는 추상클래스 안에서 실제로 동작하는 수행하는 부분이라고 생각했다. https://www.tutorialspoint.com/design_pattern/bridge_pattern.htm예제를 보면 구현 인터페이스인 DrawAPI를 추상 클래스인 Shape을 확장한 Circle이 draw메소드에서 사용하고 있는 것을 볼 수 있다.
두 개의 호환되지 않는 인터페이스를 연결해 주기 위한 패턴으로 새로운 기능의 클래스가 기존의 다른 인터페이스 기능을 사용하려고 할 때 두 인터페이스를 연결하는 용도로 사용할 수 있다.카드리더기를 예로 들 수 있는데 메모리 카드와 노트북 사이에서 노트북이 메모리 카드를 사용할 수 있도록 도와주는 것이다.A가 B의 기능을 사용해야 한다면 A의 인터페이스로 Adapter를 만들고 Adapter가 B를 사용하도록 설계하면 B의 인터페이스가 변하더라도 A의 변경없이 Adapter만을 변경하여 사용할 수 있다.https://www.tutorialspoint.com/design_pattern/adapter_pattern.htm