装饰者模式是,在不改动类的前提更新类的方法,通过的装饰者类来进行解决,这里需要和之前介绍的依赖进行区分一下
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条)