본문 바로가기

전체 글130

디자인 패턴 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.
디자인 패턴 2. 어댑터 패턴 (Adapter Pattern) 1. 개요 Adapter는 말 그대로 일본여행 갈 때 쓰는 돼지코 (110v를 220v로 변경) 같은 변환기 기능을 말한다. 어댑터 패턴은 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다. SOLID의 개방폐쇄원칙(OCP)를 따른다. 2. 코드 package com.company.design.adapter; public interface Electronic110V { void powerOn(); } 우선 110v 클래스를 만든다. package com.company.design.adapter; public interface Electronic220V { void connect(); } 220v 클래스도 만든다. package com.company.design.adapter; p.. 2022. 3. 11.