mvc/objects/BankAccount.Model.go
2025-02-23 22:22:43 +01:00

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
}