设计模式一装饰者模式

 

欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot

 


 

 

概述

   不改变其结构的情况下,可以动态地扩展其功能

   装饰者和被装饰者之间必须是一样的类型,也就是要有共同的超类

   这里应用继承并不是实现方法的复制,而是实现类型的匹配


抽象构件(Component)角色:

定义一个抽象接口以规范准备接收附加责任的对象。
具体构件(Concrete Component)角色:
实现抽象构件,通过装饰角色为其添加一些职责。
抽象装饰(Decorator)角色:
职责就是为了装饰我们的构件对象,内部一定要有一个指向构件对象的引用
具体装饰(ConcreteDecorator)角色:
实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
 1 //抽象构建
 2 interface Person {
 3     void eat();
 4 }
 5 
 6 //具体构建
 7 class Person_one implements Person {
 8 
 9     @Override
10     public void eat() {
11         System.out.println("吃大鱼");
12     }
13 }
14 
15 class Person_two implements Person {
16 
17     @Override
18     public void eat() {
19         System.out.println("吃小鱼");
20     }
21 }
22 
23 //抽象装饰者
24 abstract class NewPerson implements Person {
25     protected Person per;
26 
27     public NewPerson(Person per) {
28         this.per = per;
29     }
30 
31     public void eat() {
32         per.eat();
33     }
34 }
35 
36 //具体装饰者
37 class NewPerson_one extends NewPerson {
38     public NewPerson_one(Person per) {
39         super(per);
40     }
41 
42     void dinner() {
43         System.out.println("鲸鱼乱炖");
44     }
45 
46     public void eat() {
47         super.eat();
48         dinner();
49     }
50 }
posted @ 2019-07-31 21:31  LittleDonkey  阅读(113)  评论(0编辑  收藏  举报