首页 > 代码库 > java装饰设计模式

java装饰设计模式

将一个对象作为参数进行传递,然后对这个对象进行包装---改变其中的方法或者添加一些新的行为---装饰设计模式---装饰者模式---Decorate Model

改变一个方法:

1. 通过继承这个类,然后重写其中的方法

2. 通过对象的传递创建装饰对象,在装饰类中重新提供对应的方法
继承的缺点:

1. 单继承

2. 利用向上造型创建了一个父类对象,可以调用子类中重写方法,不能在使用父类中原来的方法

3. 如果父类对象已经存在,不能使用子类中重写之后的方法

装饰设计模式的缺点:

可能提高代码的冗余度---代理模式

 

 

 1 //人的接口
 2 public interface Person {
 3 
 4     void eat();
 5 
 6     void sleep();
 7 
 8 }
 9 
10 
11 //明星的实现类
12 public class Star implements Person {
13 
14     @SuppressWarnings("unused")
15     private Person p;
16 
17     public Star(Person p) {
18         this.p = p;
19     }
20 
21     @Override
22     public void eat() {
23         System.out.println("明星吃的是野菜~~~");
24     }
25 
26     @Override
27     public void sleep() {
28         System.out.println("上床数星星~~~");
29     }
30 
31 }
32 
33 //工人实现类
34 public class Worker implements Person {
35 
36     @Override
37     public void eat() {
38         System.out.println("工人吃一顿山珍海味~~~然后吃一个月的土~~~");
39     }
40 
41     @Override
42     public void sleep() {
43         System.out.println("上床数星星~~~");
44     }
45 
46 }
47 
48 //将工人进行包装变成明星,但本质上工人还是工人
49 public class PersonDemo {
50 
51     public static void main(String[] args) {
52 
53         Worker p = new Worker();
54 
55         p.eat();
56 
57         Star s = new Star(p);
58 
59         s.eat();
60 
61         p.eat();
62 
63     }
64 
65 }

 

java装饰设计模式