装饰模式
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
装修模式的角色如下:
装修模式的特点:
装修模式的缺点:
装饰模式的使用场景:
实例1:咖啡店有好几种咖啡,每一种都是自己的价格,成分等,类图如下;
问题的产生:咖啡可以放些糖等调料,调料种类多,新增了N个子类来对应咖啡,价格,调料之间的关系,后期维护有了很大的挑战,类图如下:
实例2:扩展JAVA里的I/O,读取文件里的数据,并转成大写字母输出
分析:JDK里I/O框架用到了适配器模式,类图如下:
说明:抽象构建角色(InputStream),装饰角色(FilterInputStream),具体装饰(BufferdInputStream等),具体构建角色(FileInputStream等)
实现:我们看类图,我们继承FilterInputStream,覆盖掉read方法就能满足这个需求了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。