结构
前一篇文章中用的实际上就是装饰模式,《设计模式》中装饰模式的类图如下(稍加修改):
参与者
• Component (DataProcessor)
—声明一个所有派生类都要遵照实现的接口,这一点保证接下来无论是装饰子类还是具象子类,都可以以同样的方式被使用和替换。
• ConcreteComponent(DataCreator)
— 不具有装饰功能的具象类。一般负责最初的处理。
• Decorator(Decorator)
—管理Component对象,并实现一个与Component接口一致的接口,其内容就是调用component对象的接口。装饰模式就是通过这种方式实现处理嵌套的。注意这里Decorator和component的关系是聚合而不是组合,Decorator不一定要负责component的生命周期。
• ConcreteDecorator(EccProcessor,SecurityProcessor)
—具象的装饰类,除了调用component操作之外,一般还要完成自己的工作。
协作
利用者调用Component类的接口,如果该Component是Decorator,就会在完成自己工作之外,还会将请求转发给它管理的component对象。完成自己工作和转发请求的次序由需求决定,不是装饰模式的要求。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】