feat : Design Pattern - 프록시(Proxy) 패턴 구현
This commit is contained in:
@@ -95,6 +95,12 @@
|
|||||||
|
|
||||||
### 프록시(Proxy) 패턴
|
### 프록시(Proxy) 패턴
|
||||||
|
|
||||||
|
#### 구현 요구사항
|
||||||
|
|
||||||
|
- 지갑의 주인은 지갑에 대해 입금 또는 출금을 진행할 수 있다.
|
||||||
|
- 지갑의 동작은 입금 및 출금만 가능하도록 제한된다.
|
||||||
|
- 지갑에 대해 입금 또는 출금이 이루어질 때 메시지를 출력한다.
|
||||||
|
|
||||||
### 어댑터(Adapter) 패턴
|
### 어댑터(Adapter) 패턴
|
||||||
|
|
||||||
### 옵저버(Observer) 패턴
|
### 옵저버(Observer) 패턴
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
class ExtendsProxyWallet(balance: Int) : RealWallet(balance) {
|
||||||
|
override fun deposit(amount: Int) {
|
||||||
|
println("지갑에 $amount 원이 입금되었습니다.")
|
||||||
|
super.deposit(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun withdrawal(amount: Int) {
|
||||||
|
println("지갑에서 $amount 원이 출금되었습니다.")
|
||||||
|
super.withdrawal(amount)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
class ImplementsProxyWallet(
|
||||||
|
private val realWallet: RealWallet
|
||||||
|
) : Wallet {
|
||||||
|
override fun deposit(amount: Int) {
|
||||||
|
println("지갑에 $amount 원이 입금되었습니다.")
|
||||||
|
realWallet.deposit(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun withdrawal(amount: Int) {
|
||||||
|
println("지갑에서 $amount 원이 출금되었습니다.")
|
||||||
|
realWallet.withdrawal(amount)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
class Owner(
|
||||||
|
private val wallet: Wallet
|
||||||
|
) {
|
||||||
|
fun deposit(amount: Int) {
|
||||||
|
wallet.deposit(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun withdrawal(amount: Int) {
|
||||||
|
wallet.withdrawal(amount)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
open class RealWallet(
|
||||||
|
private var balance: Int = 0
|
||||||
|
) : Wallet {
|
||||||
|
override fun deposit(amount: Int) {
|
||||||
|
this.balance += amount
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun withdrawal(amount: Int) {
|
||||||
|
this.balance -= amount
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
interface Wallet {
|
||||||
|
fun deposit(amount: Int)
|
||||||
|
|
||||||
|
fun withdrawal(amount: Int)
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.after
|
||||||
|
|
||||||
|
class ProxyWalletApplication
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val wallet = ImplementsProxyWallet(RealWallet())
|
||||||
|
val owner = Owner(wallet)
|
||||||
|
owner.deposit(1000)
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.before
|
||||||
|
|
||||||
|
class Owner(
|
||||||
|
private val wallet: Wallet
|
||||||
|
) {
|
||||||
|
fun deposit(amount: Int) {
|
||||||
|
wallet.deposit(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun withdrawal(amount: Int) {
|
||||||
|
wallet.withdrawal(amount)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.before
|
||||||
|
|
||||||
|
class Wallet(
|
||||||
|
private var balance: Int = 0
|
||||||
|
) {
|
||||||
|
fun deposit(amount: Int) {
|
||||||
|
println("지갑에 $amount 원이 입금되었습니다.")
|
||||||
|
this.balance += amount
|
||||||
|
}
|
||||||
|
|
||||||
|
fun withdrawal(amount: Int) {
|
||||||
|
println("지갑에서 $amount 원이 출금되었습니다.")
|
||||||
|
this.balance -= amount
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.proxy.before
|
||||||
|
|
||||||
|
class WalletApplication
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val wallet = Wallet()
|
||||||
|
val owner = Owner(wallet)
|
||||||
|
owner.deposit(1000)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user