装饰者模式
不改变原有的对象,进行动态的扩展
说明:
- Component:被装饰对象的基类,可以给这些对象动态地添加职责。定义一个对象接口,供具体的组件和装饰者继承
- ConcreteComponent: 具体被装饰对象
- Decorator: 定义了一个与Component接口一致的接口
- ConCreteDecorator: 具体装饰者,负责向内部的被装饰者添加具体的功能
示例
public abstract class ShoppingList {
public abstract void printInfo();
}
public class ConcreteList extends ShoppingList{
@Override
public void printInfo() {
System.out.println("购物单正文");
}
}
public abstract class ListDecorator extends ShoppingList{
private ShoppingList shoppingList;
public ListDecorator(ShoppingList shoppingList){
this.shoppingList=shoppingList;
}
@Override
public abstract void printInfo();
}
public class Header1List extends ListDecorator{
private ShoppingList shoppingList;
public Header1List(ShoppingList shoppingList){
super(shoppingList);
}
@Override
public void printInfo() {
System.out.println("头部信息1");
shoppingList.printInfo();
}
}
```public class Footer1List extends ListDecorator{
private ShoppingList shoppingList;
public Footer1List(ShoppingList shoppingList){
super(shoppingList);
}
@Override
public void printInfo() {
shoppingList.printInfo();
System.out.println("底部信息1");
}
}
```java
public class Client {
public static void main(String[] args) {
ShoppingList list = new Header1List(new Footer1List(new ConcreteList()));
list.printInfo();
}
}