70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package objects
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"mvc/interfaces"
|
|
)
|
|
|
|
type BankAccountModel struct {
|
|
kontostand float64
|
|
observer []interfaces.IObserver
|
|
}
|
|
|
|
func NewBankAccountModel() BankAccountModel {
|
|
return BankAccountModel{}
|
|
}
|
|
|
|
func (bm *BankAccountModel) GetBalance() float64 {
|
|
return bm.kontostand
|
|
}
|
|
|
|
func (bm *BankAccountModel) AddObserver(observer interfaces.IObserver) error {
|
|
bm.observer = append(bm.observer, observer)
|
|
return nil
|
|
}
|
|
|
|
func (bm *BankAccountModel) NotifyObserver() error {
|
|
|
|
if len(bm.observer) <= 0 {
|
|
return errors.New("no observer found")
|
|
}
|
|
|
|
for _, observer := range bm.observer {
|
|
observer.Update()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
func (bm *BankAccountModel) Deposit(balance float64) error {
|
|
|
|
if balance <= 0 {
|
|
return errors.New("balance cannot be 0")
|
|
}
|
|
|
|
fmt.Printf("balance: %v", balance)
|
|
|
|
bm.kontostand += balance
|
|
|
|
fmt.Printf("balance: %v", bm.kontostand)
|
|
|
|
bm.NotifyObserver()
|
|
return nil
|
|
}
|
|
|
|
func (bm *BankAccountModel) Withdraw(balance float64) error {
|
|
|
|
if balance <= 0 {
|
|
return errors.New("balance cannot be 0")
|
|
}
|
|
|
|
fmt.Printf("balance: %v", balance)
|
|
|
|
bm.kontostand -= balance
|
|
|
|
fmt.Printf("balance: %v", bm.kontostand)
|
|
|
|
bm.NotifyObserver()
|
|
return nil
|
|
}
|