Skip to content

Latest commit

 

History

History

07_decorator

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

装饰器模式

你有两种披萨:

  • 蔬菜披萨 Veggie Mania Pizza
  • 豆腐披萨 Peppy Tofu pizza

你可以设计一个披萨接口,然后让不同种类的披萨实现这个接口:

type pizza interface {
	getPrice() int
}

之后,你需要为披萨提供一些配料,例如:

  • 番茄配料 Tomato Topping
  • 芝士配料 Cheese Topping

这时你可能会得到如下披萨:

  • 蔬菜披萨
  • 豆腐披萨
  • 蔬菜披萨 + 番茄
  • 蔬菜披萨 + 芝士
  • 蔬菜披萨 + 番茄 + 芝士
  • ...

实现见代码...

可以发现装饰器模式和代理模式的代码很像,确实,技术上是一样的,不过所要达到的目的不太一样。

  • 帮助做你不关心的事叫代理模式;
  • 拓展基础功能之上的功能,使自己的能力增强叫装饰器模式;