728x90
설명
여러개의 타입(콘텐츠, 미디어) 별 통계,정산 하는 추상 팩토리 패턴 생성
// 통계 인터페이스
interface 통계 {
fun 작업1()
}
// 정산 인터페이스
interface 정산 {
fun 작업2()
}
// 콘텐츠통계
class 콘텐츠통계 : 통계 {
override fun 작업1() {
println("콘텐츠통계 작업1")
}
}
// 미디어통계
class 미디어통계 : 통계 {
override fun 작업1() {
println("미디어통계 작업1")
}
}
// 콘텐츠정산
class 콘텐츠정산 : 정산 {
override fun 작업2() {
println("콘텐츠정산 작업2")
}
}
// 미디어정산
class 미디어정산 : 정산 {
override fun 작업2() {
println("미디어정산 작업2")
}
}
// 추상 팩토리 인터페이스
interface 추상공장 {
fun 생성통계(): 통계
fun 생성정산(): 정산
}
// 콘텐츠 공장
class 콘텐츠공장 : 추상공장 {
override fun 생성통계(): 통계 {
return 콘텐츠통계()
}
override fun 생성정산(): 정산 {
return 콘텐츠정산()
}
}
// 미디어 공장
class 미디어공장 : 추상공장 {
override fun 생성통계(): 통계 {
return 미디어통계()
}
override fun 생성정산(): 정산 {
return 미디어정산()
}
}
fun main() {
val type = "contents" // 또는 "media"로 변경 가능
// 해당하는 타입에 따라 공장 선택
val factory: 추상공장 = when (type) {
"contents" -> 콘텐츠공장()
"media" -> 미디어공장()
else -> throw IllegalArgumentException("지원하지 않는 타입입니다.")
}
// 선택된 공장을 통해 객체 생성
val 통계: 통계 = factory.생성통계()
val 정산: 정산 = factory.생성정산()
// 생성된 객체 사용 예제
통계.작업1()
정산.작업2()
}
728x90
'Server' 카테고리의 다른 글
[비관적인락/PESSIMISTIC]_쓰기락 테스트 (0) | 2024.02.06 |
---|---|
[비관적인락/PESSIMISTIC]_쓰기락과 읽기락 (0) | 2024.02.06 |
CAP 이론 (0) | 2024.02.03 |
낙관적인락(Optimistic Locking) / 비관적인(Pessimistic Locking) (0) | 2023.08.09 |
[Jmeter]부하 테스트_Window 기준 (0) | 2023.05.11 |