装饰者设计模式
来源:互联网 发布:微专业麻瓜python编程 编辑:程序博客网 时间:2024/05/18 11:25
装饰者模式用来动态的给一个对象添加一些额外的职责。我们可以通过对一些功能的不同组合方式来创建不同的类,在这种情况下,使用装饰者设计模式是非常灵活且便捷的。
装饰者设计模式有四大角色:
(1) 抽象构建角色:定义一个抽象接口,来规范准备附加功能的类。
(2) 具体构建角色:将要被附加功能的类实现抽象构建角色接口。
(3) 抽象装饰者角色:持有对具体构建角色的引用并定义与抽象构建角色一致的接口。
(4) 具体装饰角色:实现抽象装饰者角色。负责为具体构建添加额外功能。
案列实现,需求是提供不同种类的咖啡,如加糖、加奶、加冰、加糖加奶等等,这些元素就是需要添加的额外功能。
先建立一个基础接口
/* * 创建基类接口Coffee,装饰者和被装饰者要实现这个接口 */public interface Coffee {String drink();}
再建立一个需要被装饰的基础类
再建立一个抽象装饰者角色
两个具体的装饰功能类
通过不同功能之间的对象传递,就可以实现功能的叠加。
/* * 具体构建角色,也就是被装饰的类 */public class BlackCoffee implements Coffee{@Overridepublic String drink() {return "纯咖啡";}}
/* * 抽象装饰者角色,持有具体构建者的引用 */public class Decorator implements Coffee{private Coffee coffee;public Decorator(Coffee coffee){this.coffee = coffee;}@Overridepublic String drink() {return coffee.drink();}}
两个具体的装饰功能类
/* * 具体装饰角色,实现增强的功能 */public class MilkBlackCoffee extends Decorator{public MilkBlackCoffee(Coffee coffee){super(coffee);}@Overridepublic String drink() {return super.drink()+"加奶";}}
/* * 具体装饰角色,实现增强的功能 */public class SugarBlackCoffee extends Decorator{public SugarBlackCoffee(Coffee coffee){super(coffee);}@Overridepublic String drink() {return super.drink()+"加糖";}}
通过不同功能之间的对象传递,就可以实现功能的叠加。
阅读全文
0 0
- 装饰者设计模式
- 设计模式 - 装饰者
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 装饰者设计模式
- 快乐数
- Palindrome Numbers UVALive
- Js添加事件addEventListener和attachEvent
- 超出内容时出现滚动条
- Android Studio安装Kotlin插件
- 装饰者设计模式
- Caffe for FlowNet2
- 简单易用小技能:解决无线鼠标在有电情况下突然连接不了计算机的情况
- MySQL
- [PAT-乙级]1066.图像过滤
- 腾讯云服务器MySQL开放外部访问权限
- 数据结构C语言版--动态顺序表的基本功能实现(二)
- ServiceLoader 使用
- Qt标准对话框之QColorDialog