装饰者模式(decorator)介绍
定义:
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
例子:
package wfb.test;
public class decorator {
public static void main(String[] args) {
String name = "bin";
A a = new A(name);
B b = new B(a);
b.sayHello();
}
}
interface say{
void sayHello();
}
class A implements say{
private String name;
public A(String name) {
this.name = name;
}
public void sayHello() {
System.out.println("Hello," + name + ".");
}
}
class B implements say{
//类B是A的装饰类,它与A继承了同样的接口,拥有同样的方法
private A a;//既然B是A的装饰类,B必然要有一个成员变量是A的对象
public B(A a) {
this.a = a;
}
public void sayHello() {
//B类是为了扩张A类的功能,所以这个方法要调用A类的本方法
a.sayHello();
System.out.println("How are you?");
}
}
提示:
装饰者模式也可以用继承抽象类实现。不过,它的继承目的不再是实现方法,而是继承结构。继承的目的只是为了装饰类和被装饰类有一样的操作方式。java的io流就是通过继承抽象类实现的装饰者模式。
java io
如有错误的地方,恳请指正。