java设计模式---静态代理
我们在生活中经常会遇到朋友圈代购,筹办婚礼的婚介公司,离婚诉讼的律师啊等等,这种就是我们生活中的代理。就是我们想要获得一种东西,但是获取的过程我并不care,我只想要结果,至于获取的过程是多么的困难艰辛我一点都不想听,那么我们就需要找代理,同理,java代理模式也就是这个道理。
java中的代理步骤
1、写一个接口,对应的是我想要的结果的具体抽象
2、写一个接口的实现类,java中称之为委托类,就是我想要的结果的一些详细情况
3、 编写一个代理类,java中称之为代理类proxy
实现代码
1、编写一个接口,比如我要买房子,抽象一下买房有什么需要考虑的
public interface House {
//房子价格
public int value();
//买房的动作
public boolean buy();
}
2、写一个接口的实现类,比如这栋房子具体多少钱啊
public class HouseImpl implements House{
@Override
public int value() {
//房子价格100万
return 1000000;
}
@Override
public boolean buy() {
//我就是那栋你高攀不起的房子
return false;
}
}
3、创建一个代理类,也就是买房的中介
public class HouseProxy implements House{
House target;
int money;
public HouseProxy(House target,int money){
this.target = target;
this.money = money;
}
@Override
public int value() {
return target.value();
}
@Override
public boolean buy() {
//中介的内心想法
System.out.println(money > target.value()?
"中介代理的心理------->果然是大老粗,这么贵也买得起":
"中介代理的心理------->滚,你个穷小子");
//中介只告诉你在最后的结果,买成还是没买成
return money > target.value();
}
}
ok,准备就绪,我们就来运行一下代码
public class TestBuyHouse {
public static void main(String[] args){
//我看中这套房子了
House house = new HouseImpl();
//中介我要买这台房子,出价101块钱,你帮我买
HouseProxy proxy = new HouseProxy(house,101);
//好的,中介出手,房子我有
boolean result = proxy.buy();
System.out.println(result?
"买到房啦,今晚去蹦迪" :
"没买到,晚上去一条龙治疗下受伤的心灵");
}
}
我们打印一下结果,看房子买成没有
果然是买不起,那我去银行贷款下,出价101万呢?
public class TestBuyHouse {
public static void main(String[] args){
//我看中这套房子了
House house = new HouseImpl();
House proxy = new HouseProxy(house,1010000);
//中介再次出手
boolean result = proxy.buy();
System.out.println(result?
"买到房啦,今晚去蹦迪" :
"没买成,晚上去一条龙治疗下手上的心灵");
}
}
打印下结果,看结果如何
ok,房子买到了,静态代理我们也学到了!