JAVA/디자인 패턴 (8) 썸네일형 리스트형 8. 전략 패턴 Strategy pattern 전략패턴으로 불리며, 객체지향의 꽃이라고 불린다. 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경 하여, 유연하게 확장 하는 패턴 SOLID중에서 개방폐쇄 원칙 (OCP)과 의존 역전 원칙 (DIP)를 따른다. 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 컨텍스트 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트를 코딩해보았다. public interface EncodingStrategy { String encode(String text); } import java.util.Base64; public class NormalStrategy implements EncodingStrategy{ @Override public.. 7. Facade pattern Facde는 건물의 앞쪽 정면 이라는 뜻, 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중간에 facde라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식. Facde는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 한다. public class FTP { private String host; private int port; private String path; public FTP(String host, int port, String path){ this.host = host; this.path = path; this.port = port; } public void connect(){ System.out.println("FTP.. 6. 옵저버 패턴 옵저버 패턴 관찰자 패턴은 변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것. 많이 보이는 곳은 event listener 에서 해당 패턴을 사용 하고 있다. 5. 데코레이터 패턴 Decorator pattern 데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용 한다. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 기본 베이스를 건들지 않고 부가적인 첨가를 하면서 속성을 변환시키는 패턴 public interface iCar { int getPrice(); void showPrice(); } 자동차 인터페이스 public class AudiDecorator implements iCar{ protected iCar audi; protected String modelName; protected int modelPrice; public AudiDecorator(iCar aud.. 4. 프록시(Proxy) 패턴 Proxy는 대리인이라는 뜻, 뭔가를 대신해서 처리하는 것이다. Proxy Class를 통해서 대신 전달 하는 형태로 설게되며, 실제 Client는 Proxy로 부터 결과를 받는다. Cache의 기능으로도 활용 가능. SOLID중에서 개방폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 따른다. Cache 브라우저에서 가장 많이 사용하는 기능. 인터넷 통신에서 이미 받은 결과를 그 결과를 그대로 내려주거나 자주 변경되지 않은 데이터를 메모리에 캐싱해서 내려주는 식으로 사용. 구현체 자체는 건들지 않고 원하는 메소드나 기능들을 동일하게 프록시 패턴으로 제공할 수 있다. AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점지향은 쉽게 말해 어떤 로직을 기.. 3. 어뎁터 패턴 어뎁터 패턴은 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴, 호환성이 없는 인터페이스 떄문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. Adapter는 실생활에서 110V를 220V로 변경해주거나 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기로 예로 들 수 있다. SOLID중에서 개방폐쇄 원칙을 따른다. public interface Electronic110V { void powerOn(); } public interface Electronic220V { void connect(); } public class Cleaner implements Electronic220V{ @Override public void connect() { System.out.println("청.. 2. 싱글톤 패턴 싱글톤(Singleton) 패턴 어떠한 클래스(객체)가 유일하게 1개만 존재 할 때 사용한다. 주로 사용하는 곳은 서로 자원을 공유 할 때 사용하는데, 실물 세계에서는 프린터가 해당, 실제 프로그래밍에서는 TCP Socket통신에서 서버와 연결된 connect 객체에 주로 사용한다. 코드 실습) public class Aclass { private SocketClient socketClient; public Aclass(){ this.socketClient = SocketClient.getInstance(); } public SocketClient getSocketClient(){ return this.socketClient; } } public class Bclazz { private SocketCli.. 1. 디자인 패턴 디자인 패턴이란? 자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사 하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용. Gof 디자인 패턴 소프트웨어를 설계 할 때는 기존에 경험이 매우 중요하다. 이러한 지식을 공유하기 위해서 나온 것이 GOF(Gang of Four)의 디자인 패턴이다. 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리 해둔 것이다. Gof의 디자인 패턴은 총 23개이다. 디자인 패턴의 장점 1. 개발자 간의 원활한 소통 2. 소프트웨어 구조 파악 용이 3. 재사용을 통한 개발 시간 단축 4. 설계 변경 요청에 대한 유연한 대처 디자인 패턴의 단점 1. 객.. 이전 1 다음