静态代理类与装饰者模式进行对比

续前,由于静态代理类与装饰者模式很容易混淆所以拿出来对比一下

   

//静态代理类

//静态代理类与装饰者之间的共同点:

//(1)都要实现与目标类相同的业务接口(2)在俩个类中都要声明目标对象(3)都可以在不修改目标类的前提下增强目标方法

//静态代理类与装饰者,之间的不同点:

//(1)目的不同,装饰者,简单说,就是为了增强目标对象

// 静态代理的使用目的是为了保护和隐藏目标对象

//(2)对于目标对象的获取方式不同

//装饰者中目标对象的获取,通过代参构造器传入,静态代理类中,是在无参构造器中直接创建。

//(3)功能增强的实现者不同 装饰者设计模式中存在装饰者基类,其并不能实现增强,而是由具体的装饰者进行增强的,所以其存在着"装饰者链"

//而静态代理中,一般不存在父子类的关系,具体的增强,就是由代理类实现的。无需其子类完成,所以不存在 链 的概念。

   

(1)与上一篇博客功能需求相同,项目布局如下:

   

静态代理类与装饰者模式进行对比_第1张图片

   

屏幕剪辑的捕获时间: 2017/12/27 16:21

   

(2)首先先声明业务逻辑接口

//业务逻辑接口

public interface ISomeService {

String doSome();

}

   

(3)接口实现

//目标类

public class SomeServiceImpl implements ISomeService {

   

@Override

public String doSome() {

return "abcd";

}

   

}

   

(4)代理类实现

public class SomeServiceProxy implements ISomeService {

private ISomeService target;

   

//在无参构造器中 创建目标对象

public SomeServiceProxy() {

target=new SomeServiceImpl();

}

   

@Override

public String doSome() {

return null;

}

   

}

   

(5)测试类

public class MyTest {

   

public static void main(String[] args) {

ISomeService service = new SomeServiceProxy();

String result = service.doSome();

System.out.println("result="+result);

}

   

}

   

你可能感兴趣的:(静态代理类与装饰者模式进行对比)