结构型设计模式——装饰模式


../_images/Decorator.jpg

这个玩意儿吧,其实用处就是为了在之后的项目中动态的给某一个对象更多的责任,或者说是执行方法,(当时程序是在运行时)
它的设计方法的重点在那个Component接口,首先创建一个ConcreteComponent对象,将其作为参数传递到ConcreteDecoratorA这个装饰器内,这个
装饰器给你返回一个全新的具有你原本功能的Component,实际上也就是把你的引用放进去,包一层返回给你。包的那一层就是它给你加的功能
package main

import "fmt"

type Component interface {
operation()
}


type ConcreteComponent struct {
}
func(it *ConcreteComponent)operation(){
fmt.Println("asf")
}


type ConcreteDecoratorA struct {
concretecomponent Component
}
func(it *ConcreteDecoratorA)set(component Component ) Component{
it.concretecomponent = component
return it
}
func(it *ConcreteDecoratorA)operation(){
it.concretecomponent.operation()
fmt.Println("A")
}

func main(){
var com Component = new(ConcreteComponent)
com = (new(ConcreteDecoratorA).set(com))
com.operation()
}

posted on 2019-08-09 16:53  暮城暮雪  阅读(218)  评论(0编辑  收藏  举报

导航