代理模式

代理模式 通过代理类来添加新的功能
1、代理接口

public class Student implements Person {

@Override
public void talk() {
System.out.println("talking");
}

}

2、被代理类A

public interface Person {
void talk();
}


3、代理类B

public class Lawyer implements Person {
private Person person;

@Override
public void talk() {
person = new Student();
person.talk();
System.out.println("negotiationing");
}

}



4、具体调用

public class Main {

public static void main(String[] args) {
Person person = new Lawyer();
person.talk();
}

}



代理模式是一个很简单的设计模式,平时也用的比较多。尤其是在AOP中,现在说下代理模式与装饰模式的不同
先说下相同
1、都是为原始类增加功能。
不同点
1、代理类在具体的调用方不需要知道任何带被代理方A的消息,完全屏蔽了被代理与调用方的接口,而且装饰模式调用是需要把被装饰方传入的。
2、代理模式可以在代理类内部判断逻辑来控制被代理方的行为,而且装饰模式不允许。
3、本质的区别我个人认为装饰模式是添加新的功能,装饰模式的装饰类都是一个个新功能。而且代理模式的代理类完全是一个新的身份。说通俗点就是,比如这个例子中的学生类,如果要打官司,装饰模式的就是给与这个学生一个打官司的方法,本质上还是由这个学生去打官司,而且代理模式是找一个律师来帮助学生打官司。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值