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 }