装饰者模式(Decorator)

1

定义

  装饰者模式(Decorator):属于结构型模式,可以将新功能动态地附加到对象上,在功能扩展方面,比继承更有弹性。

代码实战

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
interface Phone {
void call();
}

class Phone1 implements Phone {
@Override
public void call() {
System.out.println("call to someone");
}
}

class Phone2 implements Phone {
private final Phone phone;

Phone2(Phone phone) {
this.phone = phone;
}

@Override
public void call() {
phone.call();
}

public void play() {
System.out.println("play games");
}
}

class Test {
public static void main(String[] args) {
Phone2 phone = new Phone2(new Phone1());
phone.call();
phone.play();
}
}

类图

1

特点

  装饰者模式中,装饰对象和被装饰的对象继承自同一个接口,并且持有一个被装饰的对象。当需要实现接口中的抽象方法时,可以直接调用被装饰对象的该方法,而且可以对该接口进行扩展,从而新增或修改功能。

总结

  装饰者模式的精髓在于将继承关系转换为聚合关系,原有的方法可以通过成员变量调用,还可以扩展一些函数实现额外的功能,降低了类之间的耦合性,这种设计模式需要小伙伴们牢记。

-------------本文结束感谢您的阅读-------------
0%