结构型模式(三):Decorator ( 装饰模式 )
装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
1 interface Person{
2 public void eat();
3 }
4
5 class Man implements Person{
6 public void eat() {
7 System.out.println("吃饭");
8 }
9 }
10
11 class Decorator implements Person{
12 private Man man;
13 public void setMan(Man man) {
14 this.man = man;
15 }
16 public void eat() {
17 man.eat();
18 }
19 }
20
21 class ManDecorator extends Decorator{
22 public void eat() {
23 super.eat();
24 soup();//增加的功能
25 }
26 private void soup(){
27 System.out.println("喝汤");
28 }
29 }
30
31 public class Test {
32 public static void main(String[] args) {
33 Man man=new Man();
34 ManDecorator p=new ManDecorator();
35 p.setMan(man);
36 p.eat();
37 }
38 }