装饰模式

 1 package com.java.decorator;
 2 
 3 /**
 4  * 装饰模式
 5  */
 6 public class DecoratorTest {
 7     public static void main(String[] args) {
 8         Person person = new Person("西欧阿飞");
 9         person.show();
10         XiFu xiFu = new XiFu(person);
11         System.out.println(xiFu.show() + " 去约会喽~");
12     }
13 }
14 
15 //抽象组件接口
16 interface Component {
17     public String show();
18 
19 }
20 
21 /**
22  * 具体构建对象
23  */
24 class Person implements Component {
25     private String name;
26 
27     public Person(String name) {
28         this.name = name;
29     }
30 
31     public Person() {
32     }
33 
34     public String getName() {
35         return name;
36     }
37 
38     public void setName(String name) {
39         this.name = name;
40     }
41 
42     @Override
43     public String show() {
44         return getName() + " 穿着";
45     }
46 
47 }
48 
49 /**
50  * 抽象装饰者
51  */
52 abstract class Decorator extends Person {
53     private Person person;
54 
55     // 没有提供无参构造器
56 
57     public Decorator(Person person) {
58         this.person = person;
59     }
60 
61     @Override
62     public String show() {
63         return person.show();
64     }
65 }
66 
67 /**
68  * 具体装饰
69  */
70 class XiFu extends Decorator {
71 
72     public XiFu(Person person) {
73         super(person);
74     }
75 
76     @Override
77     public String show() {
78         return super.show() + " 西服";
79     }
80 }
81 
82 class ChenShan extends Decorator {
83 
84     public ChenShan(Person person) {
85         super(person);
86     }
87 
88     @Override
89     public String show() {
90         return super.show() + " 衬衫";
91     }
92 
93 }

 

posted @ 2020-03-23 20:28  蜜桃先生  阅读(145)  评论(0编辑  收藏  举报