어떤 하나의 기능을 구성하는 특정 부분을 실행중에 다른것으로 효과적으로 변경할 수 있는 방안을 제공한다. SumPrinter 클래스의 print 메서드 매개변수를 SumStrategy interface로 넣어 원하는 class를 구현해 변경할 수 있다. [참고자료] : https://victorydntmd.tistory.com/292 - SumPrinter.java public class SumPrinter { void print(SumStrategy strategy, int N){ System.out.printf("The Sum of 1 - %d : ", N); System.out.println(strategy.get(N)); } } - SumStrategy.java public interface Su..
동일한 형태의 데이터 항목을 여러 개 가지고 있는 것을 Container 또는 Aggregator 라고 칭한다. Aggregator의 구성 데이터를 하나씩 추출해야 할때 Aggregator의 종류(Array,Set 등)에 따라 방법이 다르다. 이를 통일된 방법으로 가져오기 위해 사용할 수 있는 패턴이 Iterator패턴이다. [참고자료] : https://jusungpark.tistory.com/25 - Aggregator.java public interface Aggregator { Iterator iterator(); } - Iterator.java public interface Iterator { boolean next(); Object current(); } - Array.java public c..
애플리케이션이 시작될 때, 어떤 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴 즉, 싱글톤 패턴은 '하나'의 인스턴스만 생성하여 사용하는 디자인 패턴이다. 자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance() 메서드를 통해 받아서 사용한다. 장점 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다. DBCP(DataBase Connection Pool)처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용한다. 인스턴스가 절대적으로 한개만..

한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 사용방법 : 상속 호환되지 않은 인터페이스를 사용하는 클라이언트 그대로 활용 가능 향후 인터페이스가 바뀌더라도, 변경 내역은 어댑터에 캡슐화 되므로 클라이언트 바뀔 필요X [클래스 다이어그램] 전기 콘센트를 보면 이해하기 쉽다. 한국의 표준 플러그를 일본에 전원 소켓에 바로 끼워줄수 없어 동그랑 모양을 일자로 바꿔주는 어댑터를 끼워주어야 한다. 이와같이 어댑터는 소켓의 인터페이스를 플러그에서 필요로 하는 인터페이스로 바꿔준다고 할 수 있다. Duck.java public interface Duck { public void q..