이번에 알아볼 패턴은 Decorator Pattern(데코레이터 패턴)이다. 구현법이 데코레이터 패턴과 비슷한 패턴들이 몇 존재하므로 구현법으로 구분하려하지말고 목적이 뭔지 잘 파악하는게 중요할듯 하다. 데코레이터 패턴은 전략 패턴(Strategy Pattern)과 마찬가지로 합성(Composite)을 이용하는 패턴이다. 내부적으로 실제 비즈니스로직을 처리하는 객체를 인스턴스변수로 갖고있으면서 해당 비즈니스로직의 처리 결과값을 자신의 이름이 말하든 한번 더 가공해주는 패턴이다. 소스로 확인해보자. //놀이공원 인터페이스 처음엔 A, B였는데 예제도 진화하고있다...interface AmusementPark {public int getTicketCost(); //티켓 값을 반환하는 추상메서드} //놀이공원..
앞선 두 포스팅을 통해 전략패턴(Strategy Pattern)과 템플릿 메서드 패턴(Template Method Pattern)에 대해 알아봤다. 이번에 알아볼 패턴은 템플릿 콜백 패턴(Template Callback Pattern)인데 앞선 두 패턴을 적절히 혼합한 형태라 크게 어려운 부분은 없다.전략 패턴의 경우 재사용하고자하는 클래스를 상속이 아닌 인스턴스 변수로 취급하는 합성(Composite)을 이용한다. 그리고 인터페이스를 활용한 다형성과 setter 메서드를 이용해 사용하고자하는 전략(인스턴스 변수가 참조하는 객체)을 필요할때마다 변경해가며 호출함으로서 변화에는 닫히고 확장에는 열린 소스를 짤수있게하는 패턴이다.템플릿 메서드 패턴의 경우는 템플릿이라는 단어에서부터 알수있듯이 크게 돌아가는 ..
자바에서 기 작성된 소스를 재사용하는 방법은 사용하고자 하는 클래스에게 상속하거나 혹은 인스턴스멤버로 합성(composite)하는 방법이 있다. 지난번 포스팅인 Strategy Pattern은 두 가지 방법중 합성을 선택해 외부에서 전략을 주입하며 사용하는 법에 대해 알아봤다.이번에는 상속을 사용하는 패턴에 대해 알아보자. 바로 Template Method Pattern(이하 템플릿 메서드 패턴) 인데 이름에서 느껴지듯 기 작성된 소스(Template)가 존재하고 해당 소스에서 부분적으로 메서드를 오버라이딩하는 패턴이다. 이렇게 작성할 경우 전체적인 뼈대인 기존 소스는 동일하게 작동하며 오버라이딩한 부분만 구현클래스별로 작동할것이다. 코드로 살펴보자 abstract class A{ //추상클래스로 작성한..
디자인패턴의 꽃이라 불리는 Strategy Pattern 에 대해 알아보자. 기본적으로 자바를 배울때 자바는 객체지향언어이고 그로인한 장점을 상속을 통해 이미 작성되어있는 코드를 재사용할 수 있는 장점이 있다고 배운다. Strategy Pattern은 그런 상속을 통한 소스 재사용을 상속이 아닌 합성(composite)을 통해 사용하는것에 초점을 맞춘다. 굳이 이렇게 거창하게 디자인패턴이라는 단어가 아니라도 다중상속이 지원되지않는 자바에서 상속 대신 합성을 사용하여 소스를 재사용하고자 하는 경우는 많다. 대표적으로 is a, has a 로 구분해서 상속과 합성을 알맞게 사용하자는 말이 있는데 합성이 구체적으로 뭔지부터 알아보자. //getString() 을 재사용 하고싶다.class A{ public S..
- Total
- Today
- Yesterday
- servlet
- code
- programming
- JavaScript Core
- MySQL
- Jackson
- go-core
- Git
- spring cloud
- OOP
- DesignPattern
- backend개발환경
- clean code
- mariadb
- 정규표현식
- frontcode
- frontend개발환경
- javascript
- Kotlin
- Spring
- toby
- TEST
- JPA
- EffectiveJava
- java8
- Design Pattern
- generics
- db
- java
- http
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |