随性施展
abstract factory pattern
type IProduct interface {show()
}
type ProductEntity struct {
}
func (product *ProductEntity) show(){fmt.Println("product entity")
}
type IFactory interface {createProduct()(product *ProductEntity)
}
type Factory struct {
}
func (factory *Factory) createProduct() (product *ProductEntity) {product = new(ProductEntity)
return product
}
func main() {factory := new (Factory)
factory.createProduct().show()
}
observer pattern
type Customer interface {update()
}
type CustomerEntity struct {
}
func (*CustomerEntity) update() {fmt.Println("message accepted")
}
type Producer struct {customers []Customer
}
func (p *Producer) addCustomer(entity *CustomerEntity) {p.customers = append(p.customers, entity)
}
func (p Producer) deleteCustomer(entity *CustomerEntity) {// TODO}
func (p *Producer) notify() {
for _, customer := range p.customers {customer.update()
}
}