
装饰者模式是,在不改动类的前提更新类的方法,通过的装饰者类来进行解决,这里需要和之前介绍的依赖进行区分一下
A:相似点:装饰者类和依赖一样,都需要有另一个类的对象传进来
B:不同点:依赖是增加方法,装饰者模式是进项更新装饰方法,并没有增加方法
由于学术短浅,目前只能装饰从接口实现来的方法,不能装饰新增的方法,日后了解一定更新
代码介绍来一个接口,用于实现两个类的方法是一样的
public interface Person {
public void run();
public void read();
public void eat();
}
被装饰的类
public class A implements Person {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("跑啊跑");
}
@Override
public void read() {
// TODO Auto-generated method stub
System.out.println("嘟嘟嘟");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃吃吃");
}
}
装饰类
import java.util.Date;
public class B implements Person {
A a;
//有参构造,传一个被装饰者对象进来
@Override
public void run() {
// TODO Auto-generated method stub
//对a的方法进行装饰
System.out.println(new Date());
a.run();
}
public B(A a) {
super();
this.a = a;
}
@Override
public void read() {
// TODO Auto-generated method stub
System.out.println(new Date());
a.read();
}
@Override
public void eat() {
// TODO Auto-generated method stub
a.eat();
}
}
测试类
public class Test {
public static void main(String[] args) {
A a=new A();
B bm=new B(a);
bm.run();
bm.eat();
bm.read();
}
}
这样就完成了简易的装饰欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)