command pattern error fix

This commit is contained in:
ismayilmalik 2018-01-20 13:07:56 +03:00
parent 28814bb7a3
commit 02323f814f

View File

@ -0,0 +1,64 @@
package command
import (
"fmt"
)
type Order interface {
execute()
}
type Stock struct {
name string
count int
}
func (s *Stock) Buy() {
fmt.Println("Bought new item.")
s.count += 1
}
func (s *Stock) Sell() {
fmt.Println("Sold one item.")
s.count -= 1
}
type BuyStock struct {
stock Stock
}
func (b *BuyStock) execute() {
b.stock.Buy()
}
type SellStock struct {
stock Stock
}
func (b *SellStock) execute() {
b.stock.Sell()
}
type Broker struct {
orders []Order
}
func (b *Broker) TakeOrder(o Order) {
b.orders = append(b.orders, o)
}
func (b *Broker) PlaceOrders() {
for _,v := range b.orders {
v.execute()
}
b.orders = make([]Order, 0)
}
func Demo() {
stock := Stock{name:"phone", count:2}
buyStck := &BuyStock{stock}
sellStck := &SellStock{stock}
broker := &Broker{}
broker.orders = make([]Order, 0)
broker.TakeOrder(buyStck)
broker.TakeOrder(sellStck)
broker.PlaceOrders()
}