add 装饰模式