일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 구멍가게코딩단
- 페이징
- 자료구조와함께배우는알고리즘입문
- 스프링부트핵심가이드
- 리눅스
- 처음 만나는 AI수학 with Python
- GIT
- 목록처리
- d
- 선형대수
- 친절한SQL튜닝
- network configuration
- 자바편
- 자료구조와 함께 배우는 알고리즘 입문
- 이터레이터
- 스프링 시큐리티
- 코드로배우는스프링웹프로젝트
- 코드로배우는스프링부트웹프로젝트
- iterator
- resttemplate
- /etc/network/interfaces
- 처음 만나는 AI 수학 with Python
- Kernighan의 C언어 프로그래밍
- 티스토리 쿠키 삭제
- 알파회계
- 네트워크 설정
- ㅒ
- 데비안
- 서버설정
- baeldung
- Today
- Total
목록Design Pattern/Compound Pattern (6)
bright jazz music
https://github.com/hojuncha997/designPatternStudy/tree/main/src/main/java/com/example/designpatternstudy/compoundPattern GitHub - hojuncha997/designPatternStudy: design pattern study design pattern study. Contribute to hojuncha997/designPatternStudy development by creating an account on GitHub. github.com 1. QuackableInterfaceForCompoundPattern 생성 (오리 생성) 처음엔 QuackableInterfaceForCompoundPattern..
개별 (오리, QuackableInterfaceForCompoundPattern)객체의 상태 변경을 체크하고 싶어졌다. 따라서 Observer 패턴을 사용한다. 우선 Observable 인터페이스를 생성한다. 여기서는 QuackObservable이라고 명명했다. Observable이 바로 관찰 대상이 된다. Observable에는 옵저버를 등록하는 메소드와 옵저버에게 연락하는 메소드가 존재해야 한다. 필요시 옵저버 제거 메소드를 포함할 수도 있다. //QuackObservable.java package com.example.designpatternstudy.compoundPattern; //개별 객체의 동작을 감시하고자 할 때 사용 //여기서는 QuackableInterfaceForCompoundPatt..
팩토리 패턴을 사용함으로써, 일일이 데코레이터로 객체를 감싸는 작업에서 벗어났다. 데코레이터로 감싸는 팩토리 클래스를 사용하면 데코레이터로 감싸진 오리 객체(QuackableInterfaceForCompoundPattern)이 생성되기 때문이다. 그러나 여전히 오리를 개별로 관리해 줘야 하는 불편이 존재한다. 오리를 종류별로 분류하여 관리할 수는 없을까? 이런 경우 Composite 패턴을 사용할 수 있다. Composite패턴은 "객체를 원소로 가지는 컬렉션"을 개별 객체와 같은 방식으로 다루기 위해 사용하는 패턴이다. 우선 컴포지트 패턴을 사용한 Flock 클래스부터 생성하자. //Flock.java //오리 무리를 만드는 클래스 //composite패턴 사용: 객체들로 구성된 컬렉션을 개별 객체와 ..
DuckSimulator에서 데코레이터로 객체를 감싸야만 오리가 소리 낸 횟수를 셀 수 있다. 그런데 오리의 종류가 늘어나고 DuckSimulator의 코드가 복잡해진다면 실수로 객체를 감싸지 않는 문제가 생길 수 있다. 이런 경우 차라리 오리를 생성하고 감싸는 작업을 분리하여 한 군데서 수행하는 것이 좋다. 이 때 팩토리 패턴을 사용해볼 수 있다. 이 예제에서는 추상 팩토리 클래스를 만들고 그 팩토리 클래스를 상속하는 방식으로 또다른 팩토리 클래스를 만들어 나가는 방식을 사용한다. 아래는 추상 팩토리 클래스인 AbstractDuckFactory이다. 이를 기반으로 기능을 추가한 팩토리 클래스를 생성할 것이다. //AbstractDuckFactory.java //새로운 기능을 사용할 때는 객체를 데코레이..
갑자기 오리가 소리낸 횟수를 세는 기능을 오리 클래스 수정 없이 추가하고 싶어졌다. 이 때 데코레이터 패턴을 사용할 수 있다. 데코레이터 패턴은 기존 기능의 수정 없이 새로운 기능을 추가하고 싶을 때 사용할 수 있다. 사실상 어댑터 패턴과 유사하다. 어댑터 패턴은 호환에 좀 더 중점을 준다는 점이 다른 것 같다. 데코레이터 패턴은 데코레이터 클래스를 만들어서 기존 객체들을 데코레이터로 감싸면 된다. 이렇게 하면 Duck코드는 건드리지 않아도 된다. 1. 데코레이터 생성 //QuackCountingDecorator.java package com.example.designpatternstudy.compoundPattern; //데코레이터. 어댑터와 마찬가지로 타겟 인터페이스 구현 필요 public class..
여기에 quack하는 기능을 가진 QuackableInterfaceForCompoundPattern 인터페이스가 있다. //QuackableInterfaceForCompoundPattern package com.example.designpatternstudy.CompoundPattern; public interface QuackableInterfaceForCompoundPattern { public void quack(); } 여러 가지 오리 클래스들이 인터페이스를 구현하여 quack 기능을 오버라이드 한다. MallardDuck, RedheadDuck, 그리고 오리 소리를 낼 수 있는 DuckCall, RubberDuck 역시 QuackableInterfaceForCompoundPattern을 구현하여..