当前位置: 首页 > wzjs >正文

深圳做网站 信科网络wordpress离线发布功能

深圳做网站 信科网络,wordpress离线发布功能,河北网络推广技术,流感吃什么药效果最好一、代理的基本定义 1.什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。 2.类是构建对象的模板 下面是最简单的代理实现(这只是一个演示会报错) package 代理;public class xiaoming {public static…

一、代理的基本定义

1.什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。

2.类是构建对象的模板

下面是最简单的代理实现(这只是一个演示会报错) 

package 代理;public class xiaoming {public static void main(String[] args) {ZFB zfb = new ZFB();}
}
package 代理;public class ZFB {private ZhuanZhang zhuanzhng = new ZhuanZhang();
}
package 代理;public class ZFB {private ZhuanZhang zhuanzhang = new ZhuanZhang();public void zfbzz(String nameA,String nameB,Double money) {YZNameA(nameA);YZNameB(nameB);YZMoney(money);ZhuanZhang.zz(nameA,nameB,money);}//对业务进行增强public void YZNameA(String nameA) {System.out.println("验证nameA");}public void YZNameB(String nameB) {System.out.println("验证nameB");}public void YZMoney(Double money) {System.out.println("验证money");}
}

下面的图相当于实现的路线

二、代理中的核心功能

1.功能增强:通过代理业务对原有业务进行增强

2.控制访问:通过代理对象的方法间接访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性。

上面的代码就实现了第二个功能

三、静态代理和动态代理

1.静态代理

2.动态代理

动态代理两种实现:1.jdk2.cglib(不进行学习)

1.像下面这种代理方法是错误的

package 代理;public class ZFB {private ZhuanZhang zhuanzhang = new ZhuanZhang();private ZF zf = new ZF();private DSP dsp = new DSP();public void zfbzz(String nameA,String nameB,Double money) {YZNameA(nameA);YZNameB(nameB);YZMoney(money);ZhuanZhang.zz(nameA,nameB,money);}//对业务进行增强public void YZNameA(String nameA) {System.out.println("验证nameA");}public void YZNameB(String nameB) {System.out.println("验证nameB");}public void YZMoney(Double money) {System.out.println("验证money");}
}
package 代理;public class ZhuanZhang {public void zz(String nameA,String nameB,Double money) {System.out.println(nameA+"向"+nameB+"转账了"+money+"元");}
}
package 代理;public class ZF {public void zf(String nameA,String nameB,Double money) {System.out.println(nameA+"向"+nameB+"支付了"+money+"元");}
}
package 代理;public class DSP {public void dsp() {System.out.println("支付宝能刷短视频.........");}
}

它会让每个目标对象中都有转账、支付、短视频的功能,每个代理对象都能够访问到这三个方法。解释图

下面代码的形式就可以

package 代理;public class ZFB {
//    private ZhuanZhang zhuanzhang = new ZhuanZhang();
//    private ZF zf = new ZF();
//    private DSP dsp = new DSP();private Object o;public ZFB(Object o) {this.o = o;}//    public void zfbzz(String nameA,String nameB,Double money) {
//        YZNameA(nameA);
//        YZNameB(nameB);
//        YZMoney(money);
//        ZhuanZhang.zz(nameA,nameB,money);
//    }//对业务进行增强public void YZNameA(String nameA) {System.out.println("验证nameA");}public void YZNameB(String nameB) {System.out.println("验证nameB");}public void YZMoney(Double money) {System.out.println("验证money");}
}
package 代理;public class xiaoming {public static void main(String[] args) {ZFB zfb = new ZFB(new ZF());ZFB zfa = new ZFB(new DSP());ZFB zfc = new ZFB(new ZhuanZhang());}
}

用一个object就可以了

2.获取目标对象里面的方法需要使用接口

3.接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

4.接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

5.除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

6.接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

不能使用图片中的方法,图片中的方法会破坏开闭原则

使用jdk中的方法和反射的原理(为每个类创建接口)

public void aa() {

new Proxy.newProxyInstance(o.getClass().getClassLoader(),o.getClass().getInterfaces(),this);

}

package 代理; public interface ZZ { public void zz(String nameA,String nameB,Double money); }

package 代理; public interface ZFF { public void zf(String nameA,String nameB,Double money); }

package 代理; public interface DS { public void dsp(); }

根据上面的方法就能够使用接口获取

包名为:import java.lang.reflect.Proxy;

动态代理的三个步骤:

1.代理类实现对目标类的引用

2.目标类的核心方法

3.调用目标类的核心方法

调用类中的核心方法

对三个参数的解释

 1.Object ,jdk创建的代理类,无需赋值
 2.Method,目标类当中的方法,jdk提供,无需赋值
 3.Object[],目标类当中的方法的参数,jdk提供,无需赋值

最后实现代码

代理类(需要调用import java.lang.reflect.Method;import java.lang.reflect.Proxy;包):

package 代理;import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//1.代理类实现对目标类的引用
//2.目标类的核心方法
//3.调用目标类的核心方法
public class ZFB {
//	private ZhuanZhang zhuanzhang = new ZhuanZhang();
//	private ZF zf = new ZF();
//	private DSP dsp = new DSP();private Object o;public ZFB(Object o) {this.o = o;}//三个参数的讲解//1.Object ,jdk创建的代理类,无需赋值//2.Method,目标类当中的方法,jdk提供,无需赋值//3.Object[],目标类当中的方法的参数,jdk提供,无需赋值public Object invoke(Object proxy, Method method,Object[] args) throws Throwable{method.invoke(o, args);return null;}//	public void zfbzz(String nameA,String nameB,Double money) {
//		YZNameA(nameA);
//		YZNameB(nameB);
//		YZMoney(money);
//		ZhuanZhang.zz(nameA,nameB,money);
//	}//对业务进行增强public void YZNameA(String nameA) {System.out.println("验证nameA");}public void YZNameB(String nameB) {System.out.println("验证nameB");}public void YZMoney(Double money) {System.out.println("验证money");}//o.getClass().getClassLoader()获取目标类的构造器//o.getClass().getInterfaces()获取目标类的接口public void aa() {new Proxy.newProxyInstance(o.getClass().getClassLoader(),o.getClass().getInterfaces(),this);}
}

 用户类:

package 代理;public class xiaoming {public static void main(String[] args) {ZFF zff = ((Object) new ZF()).aa();zff.zf("A", "B", 100.00);}
}

 转账类:

package 代理;public class ZhuanZhang implements ZZ{public void zz(String nameA,String nameB,Double money) {System.out.println(nameA+"向"+nameB+"转账了"+money+"元");}
}

 支付类:

package 代理;public class ZF implements ZFF{public void zf(String nameA,String nameB,Double money) {System.out.println(nameA+"向"+nameB+"支付了"+money+"元");}
}

短视频类: 

package 代理;public class DSP implements DS{public void dsp() {System.out.println("支付宝能刷短视频.........");}
}

 下面是三个接口代码

转账接口:

package 代理;public interface ZZ {public void zz(String nameA,String nameB,Double money);
}

支付接口: 

package 代理;public interface ZFF {public void zf(String nameA,String nameB,Double money);
}

 短视频接口:

package 代理;public interface DS {public void dsp();
}


 

http://www.dtcms.com/wzjs/603964.html

相关文章:

  • 电子商务网站设计原理知识点中企动力员工邮箱忘记密码
  • 哪个女装网站做的好西安网络技术有限公司网站
  • 潍坊网站建设哪里好wordpress大前端模板下载
  • 免费注册网站的平台大连服装网站建设
  • 支付商城网站制作出入成都最新规定今天
  • 西安网站建设制作公司做外贸哪里网站比较好
  • 重庆营销型网站开发公司大型集团网站建设公司
  • 深圳做服装设计网站的公司已收录的网站不好优化
  • 睢宁建设局网站九江集团网站建设
  • php网站如何绑定一级域名到子目录网站不绑定域名解析
  • 息壤网站打不开了常见的网站空间
  • 做虾网站该起啥名好微信网站开发多少钱
  • 永久免费搭建网站智能网站建设软件有哪些方面
  • 有什么网站可以接设计做工厂管理系统软件
  • 企业营销型网站费用厦门做网站优化公司
  • 广州做创客教室的厂家网站口碑营销策划方案
  • 怎么推广我的网站吗wordpress网站从零
  • 动力风网站建设及软件开发合同wordpress全站备份
  • 分类信息网站手机版做网站如何分类产品
  • 网站建设推荐信息网上宿迁官方网站
  • 网站建站行业猫咪社区官网在线最新
  • 怎么找上海网站建网站建设多长时间能学会
  • 怎么用自己的服务器做网站开发邦app
  • 长沙房地产网站设计南京建设工程网站
  • 网络网站开发设计网站建设服务ysaigo
  • 谭谭心怎么建设网站中国十大公司排行榜
  • 网站接入网方式蜜蜂vp加速器七天试用
  • 长沙seo技术培训网站建设和网络优化
  • 网站去掉后缀html萍乡网站制作公司
  • 学网站建设怎么样深圳网站建设网牛天下