代理模式

代理模式

代理接口

package proxy

type proxy interface{
    sell()
}

火车站售票

package proxy

type Station struct{
    name string
}

func NewStation(name string) *Station{
    return &Station{name:name}
}

func (s *Station)sell(){
    fmt.Println("身份证,目的地")
}

车票代售点

package proxy

type Shop struct{
    station *Station
}

func NewShop(station *Station) *Shop{
    return &Shop{station:station}
}

func (s *Shop)sell(){
    s.station.sell()
    fmt.Println("留下10元手续费!")
}

测试文件

package proxy

func TestProxy(t *testing.T){
    shop := NewShop(NewStation("北京南站"))
    shop.sell()
}
posted @ 2022-09-15 19:02  理科土拨鼠  阅读(24)  评论(0)    收藏  举报