객체지향 (OOP)/디자인 패턴 8

템플릿 콜백 패턴 (Template Callback Pattern)

템플릿 콜백 패턴 (Template Callback Pattern) - 전략 패턴의 변형으로, 스프링 DI(의존성 주입)에서 사용하는 특별한 형태의 전략 패턴이다. 템플릿 콜백 패턴은 전략패턴과 동일하나, 전략을 익명 내부 클래스로 정의해서 사용한다. 참고 - 전략패턴 - https://old-developer.tistory.com/136 샘플예제 전략패턴을 템플릿 콜백 패턴으로 변경하기 1. 전략 인터페이스 // 전략 인터페이스 public interface Strategy { public abstract void runStrategy(); } 2. 전략 사용 컨텍스트 // 전략을 사용하는 컨텍스트(군인) public class Soldier { void runContext(Strategy strate..

전략 패턴(strategy pattern)

정의[위키피디아] 전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다.[1] 전략은 유연하고 재사용 가능한 객체 지향 소프트웨어를 어떻게 설계하는지 기술하기 위해 디자인 패턴의 개념을 보급시킨 디자인 패턴(Gamma 등)이라는 영향력 있는 책에 포함된 패턴들 가운데 하나이다. 디자인 패턴의 꽃이라고 하는 전략패턴의 3가지 요소 - 전략 메서드를 가진 전략 객체 - 전략 객체를 사용하는 컨텍..

팩토리 메서드 패턴(Factory method pattern)

정의[위키피디아] 팩토리 메서드 패턴(Factory method pattern)은 객체지향 디자인 패턴이다. Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 예제를 보며 이해하기 1. 객체를 반환하는 추상 클래스 Animal.java public abstract class Animal { // 추상 팩터리 메서드 abstract AnimalToy getToy(); } 2. Animal 클래스의 return 객체 AnimalToy.java // 팩터리 메서드가 생성할 객체의 상위 클래스 public ..

템플릿 메소드 패턴(template method pattern)

정의[위키피디아] 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다.[1] 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다 템플릿 메소드 패턴 - 위키백과, 우리 모두의 백과사전 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다.[1] 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단 ko.wikipedia.org 예제를 보며 이해하기 1. Dog 와 Cat 클래스가 아래와 같이 존재한다. - 아래 2개의 클래스는 우는 소리 (멍멍 , 야옹 야옹)를 제외하고는 ..

싱글톤 패턴(Singleton Pattern)

전에 올린 포스팅 참고 : https://old-developer.tistory.com/49?category=931274 Java Application - 싱글톤 패턴(Singleton pattern) 학습목표 - 1. OOP 에서 싱글톤의 개념을 정의하고 이해한다. - 2. 이해한 개념을 Java 코드로 구현할 수 있다. * 참고 - 구글 검색, 구글 이미지, 유투브 : www.youtube.com/watch?v=5jgpu9-ywtY youngji.. old-developer.tistory.com 이전에 심도있게 스터디한 내용이라 , 이번에는 책 내용만 정리해봄. 싱글톤 패턴 [위키피디아] 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 ..

데코레이터 패턴 (Decorator Pattern)

정의[위키피디아] 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. 정의[쉬운버전] 데코레이터는 원본에 장식을 더하는 패턴이다. 프록시 패턴 구현 방법이 같지만 다음과 같은 차이점이 있다. 프록시 패턴 vs 데코레이터 패턴 프록시 패턴 - 클라이언트에 최종적으로 리턴되는 반환값을 그대로 전달한다. 데코레이터 패턴 - 클라이언트가 받는 반환값에 장식을 덧입힌다. 프록시 패턴과 동일하게 OCP, DIP 원칙을 구현한다. 소스코드로 이해하기 public interface IService { public String runSomething(); } -------..

프록시 패턴(proxy pattern)

정의[위키피디아] 프록시 패턴(proxy pattern)은 컴퓨터 프로그래밍에서 소프트웨어 디자인 패턴의 하나이다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다. 정의[쉽게] 단어적의미 Proxy 1.대리[위임](권) 2.대리인 3.명사 격식 또는 전문 용어 (측정·계산하려는 다른 것을 대표하도록 이용하는) 대용물 프록시 패턴은 프로그램에서 대리로 사용할 객체를 만들어서 사용한다. 프록시 패턴은 OCP, DIP 원칙을 구현한다. 우리가 스프링에서 쉽게 볼 수 있는 인터페이스 - 구현체의 관계로 이해된다. 소스코..

어댑터 패턴 (Adapter Patter)

정의 [위키피디아] : 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 정의 [쉽게] 집에서 사용하는 220V 전자 제품을 110V 로 사용하기 위해서는 어댑터가 필요하다. 어떤 제품이든 어댑터만 있으면 동일하게 변환이 가능하다. 이런 어댑터의 기능을 갖게하는 개발 패턴을 어댑터 패턴이라고 한다. 아직 이해가 안된다면, 소스로 이해하자. 어댑터 패턴을 사용하기 이전 ServiceA.java public class ServiceA { public void runServiceA() { System.out.println("ServiceA"); } }..