자바18 디자인 패턴 6. 파사드 패턴 (Facade Pattern) 1. 개요 Facade는 건물의 앞쪽 정면이라는 뜻을 가진다. 여러개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중간에 facade라는 객체를 두고, 여기서 제공하는 인터페이스만을 활용하여 기능을 사용하는 방식이다. 그러므로 Facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알고 있어야 한다. 2. 코드 우선 파사드 패턴 없이 사용하는 방식이다. package com.company.design.facade; public class Ftp { private String host; private int port; private String path; public Ftp(String host, int port, String path) { this.host = host; .. 2022. 3. 12. 디자인 패턴 5. 옵저버 패턴 (Observer Patern) 1. 개요 옵저버 (관찰자) 패턴은 변화가 일어났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴이다. 많이 보이는 곳은 event listener (swing, Android 등에서 사용)에서 해당 패턴을 사용한다. 2. 코드 package com.company.design.observer; public interface IButtonListener { void clickEvent(String event); } package com.company.design.observer; public class Button { private String name; private IButtonListener buttonListener; public Button(String name){ this.name = name.. 2022. 3. 12. 디자인 패턴 4. 데코레이터 패턴 (Decorator Pattern) 1. 개요 기존 뼈대(클래스)는 유지하면서, 이후 필요한 형태로 꾸밀 때 사용하는 패턴이다. 확장이 필요한 경우 상속의 대안으로도 사용한다. SOLID의 개방폐쇄 원칙(OCP), 의존역전 원칙(DIP)를 따른다. 에스프레소가 있다고 가정하고, 에스프레소에 물을 넣으면 아메리카노가 된다. 에스프레소에 물과 우유를 넣으면 카페라떼가 된다. 케이크에 초코를 바르면 초코케이크가 되고, 딸기를 넣으면 딸기케이크가 된다. 이런 식으로 원본을 유지하되, 어떤 것을 씌우거나 첨가하는 것으로 다른 형태로 확장하는 것을 데코레이터 패턴이라 한다. 2. 코드 package com.company.design.decorator; public interface ICar { int getPrice(); void showPrice(.. 2022. 3. 12. 디자인 패턴 3. 프록시 패턴 (Proxy Pattern), AOP 1. 개요 Proxy는 대리인 이라는 듯으로써, 뭔가를 대신하여 처리하는 것 Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로부터 결과를 받는다. Cache의 기능으로도 활용이 가능하다. SOLID중 개방폐쇄 원칙(OCP)과 의존역전 법칙(DIP)를 따른다. AOP란 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라 불린다. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누고, 그 관점을 기준으로 각각 모듈화하는 기법이다. AOP는 프록시 패턴 기반의 모듈에 부가기능(접근 제어, 실행시간 측정, 요청 정보 저장, 흩어진 기능 모으기 등)을 추가하기 위해서 사용한다. 2. 코드 proxy pattern을 이용해서 캐시.. 2022. 3. 12. 이전 1 2 3 4 5 다음