스트래티지 패턴 (strategy pattern)
: 교환 가능한 행동을 캡슐화하고 위임(Delegate)을 통해서 어떤 행동을 사용할지 결정한다. 스프링에서 생각해보면, 서비스 인터페이스에 @Autowired로 DI를 통해 사용한 것과 일치한다. 서비스는 인터페이스를 통해서 로직을 구성할 수 있으면 실질적인 구현체는 몰라도 된다. 스프링의 어플리케이션 컨텍스트가 구현체를 주입해주기 때문이다. 이를 통해서 객체간 결합이 느슨해질 수 있다.
플라이웨이트 패턴 (flyweight pattern)
: 어떤 클래스의 인스턴스 한 개만가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때
: String.valueOf()
어댑터 패턴 (adaptor pattern)
: 객체를 감싸서 다른 인터페이스를 제공한다.
: 기존의 코드를 재사용과 새로운 요구사항을 반영할 때 사용한다.
프로토타입 패턴 (prototype pattern)
: 어떤 클래스의 인스턴스를 만드는 것이 자원/시간을 많이 잡아먹거나 복잡한 경우
: Clonnable 인터페이스를 구현한다.
이터레이터 패턴 (iterator pattern)
: 컬렉션이어떤 식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리할 수 있게 한다.
컴파운드 패턴 (compound pattern)
: 반복적으로 생길 수 있는 일반적인 문제를 해결하기 위한 용도로 두 개 이상의 패턴을 결합해서 사용하는 것
인터프리터 패턴 (Interpreter pattern)
: 어떤 언어에 대한 인터프리터를 만들 때
참조사이트
: http://hyeonstorage.tistory.com/99 [개발이 하고 싶어요]