装饰器模式-Decorator(Java实现)
装饰器模式允许向一个现有的对象添加新的功能, 同时又不改变其结构。
其中 "现有对象"在本文中是StringDisplay类.
添加新的功能的对象在本文中是: SideBorder类 和 FullBorder类
Display接口
StringDisplay类
基础功能类, 用于打印字符串.
使用方式如下:
Display b1 = new StringDisplay("Hello, world.");
b1.show();
装饰器类
AbstractBorder抽象类
这是具体装饰器类的抽象定义, 为了装饰后也能统一对外的接口, 这里也继承了Display接口
SideBorder类
本类是一个装饰器
使用方式如下:
把一个SideBorder装饰器添加到StringDisplay上, 于是乎"Hello, world." 就变成了 "#Hello, world.#"
Display b1 = new StringDisplay("Hello, world.");
Display b2 = new SideBorder(b1, '#');
b2.show();
FullBorder类
本类是一个装饰器
使用方式如下:
把一个FullBorder装饰器添加到StringDisplay上, 于是乎"Hello, world." 就变成了->
+------ --+
|Hello, world.|
+---------+
Display b1 = new StringDisplay("Hello, world.");
Display b3 = new FullBorder(b1);
b3.show();
Main
运行测试
网友评论