近期再看有关于设计模式的的东西,感觉在代码架构方面尤其有用,在上学的时候没好好学这些东西,感觉自己写的代码乱成一锅粥!呵呵---
今天把看到的代理模式给大家分享分享:
中心思想:(自己总结,不妥之处大家积极吐槽)代理这个东西我举个例子,拿KFC来说吧,KFC其实总部在美国,在中华大地上的全部是代理商,交加盟费之类的,然后你可以营业了以KFC的名义,我觉得其实KFC的总部没有营业,就是没有开展销售,但是KFC有销售的职能,只不过是自己不干罢了,他将销售的职能授予了代理商,中华大地的公众KFC以及全球的,由此看来中华大地的KFC和全球的KFC全是代理,这个就是代理模式。
用代码来解释吧!
KFC总部的具备的职能,只是不去亲自上!让代理商直接使用就OK!
package com.agei.proxy;
public interface KFCSellerInterface {
public Object sell();
}
一下就是类似于KFC的运营部,专门琢磨怎么去销售的:
package com.agei.proxy;
public class KFCFactory implements KFCSellerInterface {
@Override
public Object sell() {
// TODO Auto-generated method stub
System.out.println("KFCFactory use");
return new Object();
}
}
真正的代理来了:直接使用KFC运营部的成果,来挣钱,交保护费!
package com.agei.proxy;
public class KFCProxy implements KFCSellerInterface{
private KFCFactory kfcFactory = new KFCFactory();
@Override
public Object sell() {
Object object = kfcFactory.sell();
return object;
}
}
客户去直接来个汉堡什么的,去的是代理商,但是得到的服务是KFC总部的那些玩意!
package com.agei.proxy;
public class Test {
public static void main(String[] args) {
KFCSellerInterface kInterface = new KFCProxy();
kInterface.sell();
}
}
这个在代码架构的时候,尤其有用,大概就是封装一个功能体,然后用代理来调用实现的方法~!