일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빅데이터
- 디자인패턴
- 데이터구조
- 자바스크립트
- 파이썬
- 프로그래밍언어
- Yes
- 버전관리
- 사이버보안
- 알고리즘
- 컴퓨터과학
- 딥러닝
- 네트워크
- 데이터과학
- 인공지능
- 소프트웨어공학
- 보안
- 머신러닝
- 웹개발
- 데이터분석
- 네트워크보안
- 소프트웨어
- I'm Sorry
- 데이터베이스
- 컴퓨터비전
- 프로그래밍
- springboot
- 컴퓨터공학
- 클라우드컴퓨팅
- 자료구조
- Today
- Total
목록strategy패턴 (3)
스택큐힙리스트
1. 테스트 시나리오실무에서 많이 쓰는 수수료 계산 전략을 세 가지 버전으로 만들고 JMH 1.37(kotlinx-benchmark 래퍼)로 5 회 warm-up, 10 회 measurement를 돌렸다.인터페이스 + 클래식 구현함수 타입((Int) -> Int) 전달inline 고차함수 – inline fun pay(amount: Int, fee: (Int) -> Int)모두 동일한 곱셈·나눗셈 로직, JVM 21, -Xms2g -Xmx2g, M2 Max.2. 결과 요약 (평균 값·allocation 수)인터페이스 호출: ≈ 80 ns/op, 할당 0함수 타입(비-inline): ≈ 130 ns/op, 1 객체 ≈ 24 Binline 고차함수: ≈ 13 ns/op, 할당 0핵심 포인트는 두 가지다.람다..
“수수료 정책 또 바뀌었대…”클래스 만들기 귀찮다면 코틀린 고차함수로 전략을 바로 끼워 넣자. 인터페이스도, DI 설정도 필요 없다. 함수 하나가 곧 전략 객체가 된다.typealias FeePolicy = (Int) -> Int // ① 전략 타입fun pay(amount: Int, strategy: FeePolicy) = amount + strategy(amount) // ② 컨텍스트println(pay(10_000) { (it * 3) / 100 }) // ③ 런타임 전략 주입1줄: typealias로 전략(알고리즘) 시그니처 선언2줄: pay 함수가 컨텍스트 역할, 전략에 계산 위임3줄: 호출부에서 람다만 넘기면 카드·계좌이체·쿠폰 어떤..
1. 왜 Strategy 패턴인가?“결제 수수료 정책이 또 바뀌었대요.”매번 if … else … 문을 고쳐 배포했다면 이제는 Strategy 패턴으로 갈아타 보세요.행위를 인터페이스(전략)로 분리해 두면 런타임에 원하는 구현으로 교체할 수 있어 코드 가독성·테스트 용이성이 모두 상승합니다. 이를테면 신용카드 → 계좌이체 → 간편결제 로직을 바꿀 때 클래스만 새로 만들어 DI(Container)가 끼워 넣어 주면 끝!2. 핵심 구조 (말로 툭 설명)Strategy: 알고리즘 규약을 담은 인터페이스ConcreteStrategy: 실제 알고리즘 클래스들Context: Strategy를 받아 행위를 위임하고, 필요하면 전략을 교체3. Kotlin 예제 – 결제 수수료 계산기// 1) 전략 인터페이스fun in..