feat : Design Pattern - 어댑터(Adapter) 패턴 구현
This commit is contained in:
@@ -98,11 +98,21 @@
|
||||
#### 구현 요구사항
|
||||
|
||||
- 지갑의 주인은 지갑에 대해 입금 또는 출금을 진행할 수 있다.
|
||||
- 지갑의 동작은 입금 및 출금만 가능하도록 제한된다.
|
||||
- 지갑의 동작은 입금 및 출금만 가능하도록 제한된다.
|
||||
- 지갑에 대해 입금 또는 출금이 이루어질 때 메시지를 출력한다.
|
||||
|
||||
### 어댑터(Adapter) 패턴
|
||||
|
||||
#### 구현 요구사항
|
||||
|
||||
- 발전소는 정해진 요청 규격에 따라 전기를 생산한다.
|
||||
- 가정은 정해진 규격에 따라 전기를 얻는다.
|
||||
- 발전소와 가정에서 사용하는 전기는 각각 다르다.
|
||||
- 발전소에서 생산한 전기를 가정용으로 변환하는 계산식은 아래와 같다.
|
||||
- 생산된 전류량 * (발전소 전압 / 가정용 전압)
|
||||
- 발전소에서 생산한 전기의 전압은 11000V 이다.
|
||||
- 가정에서 사용하는 전기의 전압은 220V 이다.
|
||||
|
||||
### 옵저버(Observer) 패턴
|
||||
|
||||
### 미디에이터(Mediator) 패턴
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.after
|
||||
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.HomeElectric
|
||||
|
||||
interface ElectricService {
|
||||
fun generateElectric(current: Int): HomeElectric
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.after
|
||||
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.HomeElectric
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.PowerStation
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.PowerStationElectricRequest
|
||||
|
||||
class HomePowerStationElectricAdapter(
|
||||
private val powerStation: PowerStation
|
||||
): ElectricService {
|
||||
override fun generateElectric(current: Int): HomeElectric {
|
||||
val powerStationElectricRequest = PowerStationElectricRequest(current)
|
||||
val powerStationElectric = powerStation.generateElectric(powerStationElectricRequest)
|
||||
return powerStationElectric.toHomeElectric()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.after
|
||||
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.Home
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.PowerStation
|
||||
|
||||
class PowerStationApplication
|
||||
|
||||
fun main() {
|
||||
val powerStation = PowerStation()
|
||||
val homePowerStationElectricAdapter = HomePowerStationElectricAdapter(powerStation)
|
||||
|
||||
val homeElectric = homePowerStationElectricAdapter.generateElectric(1000)
|
||||
|
||||
val home = Home()
|
||||
home.takeElectric(homeElectric) // 가정은 발전소의 전기를 사용하는 클라이언트 역할을 한다.
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.before
|
||||
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.Home
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.PowerStation
|
||||
import com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common.PowerStationElectricRequest
|
||||
|
||||
class PowerStationApplication
|
||||
|
||||
fun main() {
|
||||
val powerStation = PowerStation()
|
||||
|
||||
val electricRequest = PowerStationElectricRequest(1000)
|
||||
val powerStationElectric = powerStation.generateElectric(electricRequest)
|
||||
|
||||
val homeElectric = powerStationElectric.toHomeElectric()
|
||||
|
||||
val home = Home()
|
||||
home.takeElectric(homeElectric) // 가정은 발전소의 전기를 사용하는 클라이언트 역할을 한다.
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common
|
||||
|
||||
class Home(
|
||||
private var electric: HomeElectric = HomeElectric(0)
|
||||
) {
|
||||
fun takeElectric(electric: HomeElectric) {
|
||||
this.electric = electric
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common
|
||||
|
||||
data class HomeElectric(
|
||||
val current: Int,
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common
|
||||
|
||||
class PowerStation {
|
||||
fun generateElectric(request: PowerStationElectricRequest): PowerStationElectric {
|
||||
return PowerStationElectric(request.current)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common
|
||||
|
||||
data class PowerStationElectric(
|
||||
val current: Int,
|
||||
) {
|
||||
fun toHomeElectric(): HomeElectric {
|
||||
return HomeElectric(this.current * (11000 / 220))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.adapter.common
|
||||
|
||||
data class PowerStationElectricRequest(
|
||||
val current: Int
|
||||
)
|
||||
Reference in New Issue
Block a user