본문 바로가기

Spring/디자인패턴8

Strategy pattern(스트래티지 패턴) Strategy pattern은 전략 패턴으로 불리며, 객체지향의 꽃이다. 유사한 행위들을 캠슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경 하여, 유연하게 확장 하는 패턴 SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 예제(Encoding관련) 전략 메서드를 가진 전략 객체 (Normal Strategy, Base64 Strategy) 전략 객체를 사용하는 컨텍스트(Encoder) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 꼭 있어야 할 3가지 1. 전략메서드를 가지는 전략객체(Normal,Base64) 2.전략객체를 사용하는 콘텍스트(encoder) 3.전략 객체를 생성해서 콘텍스트에 주입하는 클라이언트(Main메소드) Encodi.. 2023. 7. 25.
Facade Pattern(파사드 패턴) Facade는 건물의 앞쪽 정면 이라는 뜻을 가진다. 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중간에 facade 라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식이다. facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 한다. Facade패턴을 이용한 FTP만들어보기 FTP란? FTP(File Transfer Protocol)은 이용자의 PC와 쇼핑몰 호스팅 서버 간 파일을 송수신하는 프로그램을 말한다. FTP는 파일 전송 전용 서비스이기 때문에, 많은 양의 파일을 일괄적으로 주고 받을 때 효과적임. Ftp(클래스) package Muzi.facade; public class Ftp { private Strin.. 2023. 7. 24.
ObserverPattern(옵저버 패턴) ObserverPattern은 관찰자 패턴은 변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. 많이 보이는 곳은 event listener에서 해당 페턴을 사용 하고 있다. ex) 교실에서 누군가 망을 보다가 선생님 오신다라고 한다면 그 가운데 있는 친구가 옵저버가 되어서 안쪽에 있는 친구들에게 이벤트를 전달한다. 관찰을 하고있는 친구가 관찰하는것에 변화가 생기면 미리 등록되어있는 친구들에게 이벤트를 전달해 주는것을 옵저버 패턴이라고 한다. IButtonListener(인터페이스) package Muzi.observer; public interface IButtonListener { void clickEvent(String event); } Button(클래스) pack.. 2023. 7. 24.
Decorator pattern(데코레이터 패턴) 데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용 한다. SOUD중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. ex)케이크 케이크에 초코를 바르면 초코케이크 가 되고 딸기를 넣으면 딸기 케이크가 된다. 이렇게 원본을 유지하되 어떤것을 씌우냐, 다른것을 첨가하느냐에 따라 다른 형태로 확장되는것을 데코레이터 패턴이라고 한다. ICar(인터페이스) package Muzi.decorator; public interface ICar { int getPrice(); void showPrice(); } Audi(클래스) = ICar(상속) package Muzi.decorator; public class Audi .. 2023. 7. 24.
Proxy pattern(프록시 패턴) Proxy는 대리인 이라는 뜻으로써, 뭔가를 대신해서 처리하는 것 Proxy Class를 통해서 대신 전달 하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받는다. Cache의 기능으로도 활용이 가능 하다. SOLID중에서 개방폐쇄 원칙 (OCP)과 의존 역전 원칙(DIP)를 따른다. 구조 패턴 카테고리 클라이언트는 실제객체 대신 Proxy 객체를 통해 작업요청 proxy는 실제격체와 클라이언트 사이에 존재 적용사례 Access Control / Validation Caching / Logging Debit / check Card (banking) 프록시 패턴을 이용한 캐싱기능 -브라우저, 인터넷 통신에서 이미 받아둔 결과가 있다면 결과를 그 결과를 그대로 내려주거나 서버에서도 특정한.. 2023. 7. 21.
Adapter Pattern(어댑터 패턴) Adapter는 실생활에서는 100v 를 220v로 변경해주거나, 그 반대로 해주는 흔히돼지코 라고 불리는 변환기를 예로 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를 변환하여재사용 할 수 있도록 한다. SOLID중에서 개방폐쇠 원칙(OCP)를 따른다. ex)우리집에있는 가전제품 헤어드라이기 110V 청소기 220V 에어컨 220V Electronic110V 인터페이스 package Muzi.adapter; public interface Electronic110V { void powerOn(); } Electronic220V인터페이스 package Muzi.adapter; public interface Electronic220V { void connect(); } Airconditioner 클래.. 2023. 7. 19.