内容简介:Adapter模式也被称为Wrapper模式,有以下两种:
适配器模式
Adapter模式也被称为Wrapper模式,有以下两种:
- 类适配器(使用继承)
实现目标接口,继承被适配类
- 对象适配器(使用委托)
继承目标类,依赖被适配类
参考 http://blog.51cto.com/liuxp08...
package main import ( "fmt" ) func main() { duck := &MallardDuck{} turkey := &WildTurkey{} turkeyAdapter := NewTurkeyAdapter(turkey) fmt.Println("The Turkey says...") turkey.gobble() turkey.fly() fmt.Println("The Duck says...") duck.quack() duck.fly() fmt.Println("The Turkey Adapter says...") turkeyAdapter.quack() turkeyAdapter.fly() } type Duck interface { quack() fly() } type Turkey interface { gobble() fly() } type MallardDuck struct { } func (*MallardDuck) quack() { fmt.Println("Quark...") } func (*MallardDuck) fly() { fmt.Println("flying...") } type WildTurkey struct { } func (*WildTurkey) gobble() { fmt.Println("Gobble...") } func (*WildTurkey) fly() { fmt.Println("flying a short distance") } type TurkeyAdapter struct { turkey Turkey } func NewTurkeyAdapter(turkey Turkey) *TurkeyAdapter { return &TurkeyAdapter{turkey} } func (this *TurkeyAdapter) quack() { this.turkey.gobble() } func (this *TurkeyAdapter) fly() { for i := 0; i < 5; i++ { this.turkey.fly() } }
适配器TurkeyAdpater,持有turkey Turkey,实现Duck接口。
代理模式
uml:
https://design-patterns.readt...
代理模式中的成员构成:
- Subject(主体)
- Proxy (代理人)
- RealSubject(实际的主体)
- Client (请求者)
代理的目的是在目标对象方法的基础上作增强,这种增强的本质通常就是对目标对象的方法进行拦截和过滤。
以上所述就是小编给大家介绍的《gof23结构类模式(golang版)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。