代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。
目标:在eat方法执行的前后增加业务逻辑
准备工作
先准备三个基础类
怎么做代理卖东西,public interface Person {void eat();}/** * 实现了Person接口 */public class OnePerson implements Person{@Overridepublic void eat() {System.out.println(&34;);}}/** * 未实现任何接口 */public class User {public void eat(){System.out.println(&34;);}}
public interface Person {void eat();}/** * 实现了Person接口 */public class OnePerson implements Person{@Overridepublic void eat() {System.out.println(&34;);}}/** * 未实现任何接口 */public class User {public void eat(){System.out.println(&34;);}}
01 做代理首先选择货源,联系厂商,获得产品的代理权,在获得代理权后便可以开始利用各种手段联系客户,将产品推销出去获取利润。做代理,要针对性的选择货源。而厂商的代理权也不是随便就能拿到的,你需要充分展示出自己的。
静态代理
优点:直观、简单、效率高
企业回看专业性专业的人做专业的事,才能做好这件事,并且出错率极低,在这点上可以查看代理企业的宣传册、公司的网址等对业务的介绍,好的企业对于从事的行业会有不同的理解并展示给客户们,还可以看服务人员对服务的介绍以及企业的介绍等。看口碑口。
缺点:代理对象必须提前写出,如果接口层发生了变化,代理对象的代码也要进行维护
新手做代理商分为以下几步:1、必须要做好前三个月做好没有任何收入的准备。必须要有费用支出经济准备。(除了生活费以外的一些额外开支)2、选择一个好的项目,好的项目不是指市场畅销的知名品牌才是好产品、好项目。一。
public class Demo {public static void main(String[] args) {Person person = new PersonProxy(new OnePerson());person.eat();}}
新手做代理商分为以下几步:1、必须要做好前三个月做好没有任何收入的准备。必须要有费用支出经济准备。(除了生活费以外的一些额外开支)2、选择一个好的项目,好的项目不是指市场畅销的知名品牌才是好产品、好项目。一。
动态代理(也叫JDK代理)
缺点:至少包含一个接口
public class JDKDongTaiProxy {public static void main(String[] args) {Person target = new OnePerson();Person person = (Person) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy,Method method,Object[] args) throws Throwable {System.out.println(&34;);Object result = method.invoke(target,args);System.out.println(&34;);return result;}});person.eat();}}
Cglib代理
找一个靠的住的商家,帮他做代理。代理分两种,第一种是把她的货物买下来,然后自己卖。第二种就是自己不用花一分钱只需要把他的物品推广然后自己赚差价的代理。做代理的意思是成为某种商品或某个品牌的代理商。代理商是代。
缺点:依赖cglib包
public class MyMethodInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object o,Method method,Object[] objects,MethodProxy methodProxy) throws Throwable {System.out.println(&34;);Object result = methodProxy.invokeSuper(o,objects);System.out.println(&34;);return result;}}