본문 바로가기

JAVA/DesignPattern11

디자인패턴 - 어댑터 패턴 (adapter pattern) 어댑터 패턴 (adapter pattern) 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할수 있다.이렇게 함으로써 클라이언트와 구현된 인터페이스를 분리시킬수 있으며, 향후 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화 되기 때문에 클라이언트는 바뀔 필요가 없어진다. 어댑터 패턴 클래스 다이어그램 전기 콘센트를 보면 이해가 쉽다.한국의 표준 플러그를 일본에 전원 소켓에 바로끼워줄수 없어 동그랑 모양을 일자로 바꿔주는 어댑터를 끼워주어야 한다.이와같이 어댑터는 소켓의 인터페이스를 플러그에서 필요로 하는 인.. 2016. 6. 13.
디자인패턴 - 커맨드 패턴 (command pattern) 커맨드 패턴 (command pattern) 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을수 있다.또한 요청 내역을 큐에 저장하거나 로그로 기록할수 도있으며 작업취소 기능도 지원가능 하다. 커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구사항을 캡슐화한다.이렇게 하기 위해 행동과 리시버를 한 객체에 집어넣고 메소드 하나만 외부에 공개하는 방법을 사용한다. 커맨드 패턴 클래스 다이어그램 식당을 예로들어보자. 1. 손님이 웨이터에게 주문을 한다.2. 웨이터가 고객의 주문을 주문서에 적는다.3. 웨이터는 주문서를 주방에 전달하여 주문을 요청한다.4. 요리사는 주문서에 적힌 주문대로 음식을 자신의 노하우로 만든다. 손님 == 클라이언트웨이터 == 인.. 2016. 5. 24.
디자인패턴 - 싱글턴 패턴 (singleton pattern) 싱글턴 패턴 (singleton pattern) 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴. 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만든다.다른 어떤클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야한다. 싱글턴 클래스 다이어그램 고전적인 싱글턴 패턴 구현법 (어떤 문제가 있을까?) public class Singleton {private static Singleton uniqueInstance;private Singleton(){}public static Singleton getInstance(){if (uniqueInstance == null){uniqueInstance = new Singleton();}return un.. 2016. 5. 16.
디자인패턴 - 팩토리 패턴 (factory pattern) 팩토리 패턴 (factory pattern) 팩토리 메소드 패턴 : 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다. 즉 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것. 추상 팩토리 패턴 : 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성. new를 사용하는 것은 구상 클래스의 인스턴스를 만드는 것이다.당연히! 인터페이스가 아닌 특정 구현을 사용하게 되어버리는 것.일련의 구상 클래스들이 있을때는 어쩔수 없이 다음과 같은 코드를 만들어야 하는 경우가 있음. Duck duck; if ( type == picnic ) duck = new MallardDuck();.. 2016. 5. 12.