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

做排行榜的网站知乎WordPress生成分享图片

做排行榜的网站知乎,WordPress生成分享图片,外贸网络推广是什么,国外域名购买网站结构性模式一共包括七种#xff1a; 代理模式、桥接模式、装饰者模式、适配器模式、门面(外观)模式、组合模式、和享元模式。 1 代理模式介绍 软件开发中的代理#xff1a; 代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到了中介的作用,它去掉客…结构性模式一共包括七种 代理模式、桥接模式、装饰者模式、适配器模式、门面(外观)模式、组合模式、和享元模式。 1 代理模式介绍 软件开发中的代理 代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到了中介的作用,它去掉客户不能看到的内容和服务或者增加客户需要的额外的新服务. 2 代理模式原理 3 静态代理实现 举例保存用户功能的静态代理实现 public interface IUserDao {void save(); }/*** 目标类**/ public class UserDaoImpl implements IUserDao {Overridepublic void save() {System.out.println(保存数据);} }/*** 代理类**/ public class UserDaoProxy implements IUserDao {private IUserDao target;public UserDaoProxy(IUserDao target) {this.target target;}Overridepublic void save() {System.out.println(开启事务); //扩展额外的功能target.save();System.out.println(提交事务);} }/*** 静态代理* 优点: 可以在不修改目标类的前提下,扩展目标类的功能* 缺点:* 1.冗余.由于代理对象要实现和目标对象一致的接口,会产生很多的代理.* 2.不易维护.一旦接口中增加方法,目标对象和代理对象都要进行修改.*/Testpublic void testStaticProxy(){//目标类IUserDao dao new UserDaoImpl();//代理对象UserDaoProxy proxy new UserDaoProxy(dao);proxy.save();}4 JDK动态代理 举例保存用户功能的静态代理实现 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;/*** 代理工厂类-动态的生成代理对象**/ public class ProxyFactory {//维护一个目标对象private Object target;public ProxyFactory(Object target) {this.target target;}//为目标对象生成代理对象public Object getProxyInstance(){return Proxy.newProxyInstance(//目标类使用的类加载器target.getClass().getClassLoader(),//目标对象实现的接口类型target.getClass().getInterfaces(),new InvocationHandler() { //事件处理器Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(开启事务);method.invoke(target,args);System.out.println(提交事务);return null;}});} }测试 public static void main(String[] args) {IUserDao userDao new UserDaoImpl();System.out.println(userDao.getClass()); //目标对象的信息IUserDao proxy (IUserDao) new ProxyFactory(userDao).getProxyInstance();//获取代理对象System.out.println(proxy.getClass());proxy.save();//代理方法while (true){}}5 类是如何动态生成的 6代理类的调用过程 我们通过借用阿里巴巴的一款线上监控诊断产品 Arthas(阿尔萨斯) ,对动态生成的代理类代码进行查看. 代理类代码如下: package com.sun.proxy;import com.mashibing.proxy.example01.IUserDao; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.lang.reflect.UndeclaredThrowableException;public final class $Proxy0 extends Proxy implements IUserDao {private static Method m1;private static Method m3;private static Method m2;private static Method m0;public $Proxy0(InvocationHandler invocationHandler) {super(invocationHandler);}static {try { m1 Class.forName(java.lang.Object).getMethod(equals,Class.forName(java.lang.Object));m3 Class.forName(com.mashibing.proxy.example01.IUserDao).getMethod(save, new Class[0]);m2 Class.forName(java.lang.Object).getMethod(toString, newClass[0]);m0 Class.forName(java.lang.Object).getMethod(hashCode, newClass[0]);return;}catch (NoSuchMethodException noSuchMethodException) {throw new NoSuchMethodError(noSuchMethodException.getMessage());}catch (ClassNotFoundException classNotFoundException){throw new NoClassDefFoundError(classNotFoundException.getMessage());}}public final boolean equals(Object object) {try {return (Boolean)this.h.invoke(this, m1, newObject[]{object});}catch (Error | RuntimeException throwable) {throw throwable;}catch (Throwable throwable) {throw new UndeclaredThrowableException(throwable);}}public final String toString() {try {return (String)this.h.invoke(this, m2, null);}catch (Error | RuntimeException throwable) {throw throwable;}catch (Throwable throwable) {throw new UndeclaredThrowableException(throwable);}}public final int hashCode() {try {return (Integer)this.h.invoke(this, m0, null);}catch (Error | RuntimeException throwable) {throw throwable;}catch (Throwable throwable) {throw new UndeclaredThrowableException(throwable);}}public final void save() {try {this.h.invoke(this, m3, null);return;}catch (Error | RuntimeException throwable) {throw throwable;}catch (Throwable throwable) {throw new UndeclaredThrowableException(throwable);}} }爲了方便理解简化后的代码 package com.sun.proxy;import com.mashibing.proxy.example01.IUserDao; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.lang.reflect.UndeclaredThrowableException;public final class $Proxy0 extends Proxy implements IUserDao {private static Method m3;public $Proxy0(InvocationHandler invocationHandler) {super(invocationHandler);}static {try {m3 Class.forName(com.mashibing.proxy.example01.IUserDao).getMethod(save, new Class[0]);return;}}public final void save() {try {this.h.invoke(this, m3, null);return;}} }7 cglib动态代理 使用cglib 需要引入cglib 的jar包如果你已经有spring-core的jar包则无需引入因为spring中包含了cglib 。 dependencygroupIdcglib/groupIdartifactIdcglib/artifactIdversion3.2.5/version /dependency示例代码 目标类 /*** 目标类**/ public class UserServiceImpl {//查询功能public ListUser findUserList(){return Collections.singletonList(new User(tom,23));} }cglib代理类需要实现MethodInterceptor接口并指定代理目标类target import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Calendar; //在實現動態代理的同時擴展一個日志的功能 public class UserLogProxy implements MethodInterceptor {/*** 生成CGLIB动态代理类方法* param target 需要被代理的目标类* return: java.lang.Object 代理类对象*/public Object getLogProxy(Object target){//增强器类,用来创建动态代理类Enhancer enhancer new Enhancer();//设置代理类的父类字节码对象enhancer.setSuperclass(target.getClass());//设置回调enhancer.setCallback(this);//创建动态代理对象,并返回return enhancer.create();}/*** 实现回调方法* param o 代理对象* param method 目标对象中的方法的Method实例* param args 实际参数* param methodProxy 代理类对象中的方法的Method实例* return: java.lang.Object*/Overridepublic Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {Calendar instance Calendar.getInstance();SimpleDateFormat format new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(format.format(instance.getTime()) [ method.getName() ] 查询用户信息...);Object result methodProxy.invokeSuper(o, args);return null;} } public class User {private String name;private int age;public User(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return User{ name name \ , age age };} }8 cglib代理流程 9代理模式总结 參考文章 https://www.cnblogs.com/hg-blogs/p/17314887.html
文章转载自:
http://www.morning.wsyq.cn.gov.cn.wsyq.cn
http://www.morning.wrtxk.cn.gov.cn.wrtxk.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn
http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn
http://www.morning.qbjgw.cn.gov.cn.qbjgw.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn
http://www.morning.drrt.cn.gov.cn.drrt.cn
http://www.morning.zbqry.cn.gov.cn.zbqry.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.ltrz.cn.gov.cn.ltrz.cn
http://www.morning.rbmm.cn.gov.cn.rbmm.cn
http://www.morning.mszwg.cn.gov.cn.mszwg.cn
http://www.morning.xfwnk.cn.gov.cn.xfwnk.cn
http://www.morning.dblgm.cn.gov.cn.dblgm.cn
http://www.morning.gidmag.com.gov.cn.gidmag.com
http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.krywy.cn.gov.cn.krywy.cn
http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn
http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn
http://www.morning.wwxg.cn.gov.cn.wwxg.cn
http://www.morning.qptbn.cn.gov.cn.qptbn.cn
http://www.morning.rpzth.cn.gov.cn.rpzth.cn
http://www.morning.fnczn.cn.gov.cn.fnczn.cn
http://www.morning.hwxxh.cn.gov.cn.hwxxh.cn
http://www.morning.xsjfk.cn.gov.cn.xsjfk.cn
http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn
http://www.morning.lgpzq.cn.gov.cn.lgpzq.cn
http://www.morning.pmmrb.cn.gov.cn.pmmrb.cn
http://www.morning.zdgp.cn.gov.cn.zdgp.cn
http://www.morning.pynzj.cn.gov.cn.pynzj.cn
http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn
http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn
http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn
http://www.morning.jjpk.cn.gov.cn.jjpk.cn
http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn
http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn
http://www.morning.grxsc.cn.gov.cn.grxsc.cn
http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn
http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn
http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn
http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn
http://www.morning.cmdfh.cn.gov.cn.cmdfh.cn
http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn
http://www.morning.hrtct.cn.gov.cn.hrtct.cn
http://www.morning.czcbl.cn.gov.cn.czcbl.cn
http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn
http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn
http://www.morning.crtgd.cn.gov.cn.crtgd.cn
http://www.morning.qsfys.cn.gov.cn.qsfys.cn
http://www.morning.snlxb.cn.gov.cn.snlxb.cn
http://www.morning.cgstn.cn.gov.cn.cgstn.cn
http://www.morning.knrgb.cn.gov.cn.knrgb.cn
http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn
http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn
http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn
http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn
http://www.morning.wdykx.cn.gov.cn.wdykx.cn
http://www.morning.hqllj.cn.gov.cn.hqllj.cn
http://www.morning.yxshp.cn.gov.cn.yxshp.cn
http://www.morning.yskhj.cn.gov.cn.yskhj.cn
http://www.morning.jpgfx.cn.gov.cn.jpgfx.cn
http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn
http://www.morning.lcmhq.cn.gov.cn.lcmhq.cn
http://www.morning.ltrz.cn.gov.cn.ltrz.cn
http://www.morning.bmts.cn.gov.cn.bmts.cn
http://www.morning.lqws.cn.gov.cn.lqws.cn
http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn
http://www.morning.ktntj.cn.gov.cn.ktntj.cn
http://www.morning.kgphd.cn.gov.cn.kgphd.cn
http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn
http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn
http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn
http://www.morning.fnfxp.cn.gov.cn.fnfxp.cn
http://www.morning.bnygf.cn.gov.cn.bnygf.cn
http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn
http://www.tj-hxxt.cn/news/242639.html

相关文章:

  • 高端网站制作乐是百度注册公司网站
  • wordpress 相册 免费模板百度seo排名如何提升
  • 金融理财网站建设成免费的crm
  • 网站注册界面软件开发 东莞
  • kuake自助建站系统官网房地产网站模板
  • 新郑郑州网站建设建设写小说网站
  • 温州网站建设技术托管如何做好电商销售
  • 手机网站底部导航菜单网站的头尾和导航的公用文件
  • 做搜狐网站页面做地方网站赚钱吗
  • wordpress做复杂网站网站建设多少钱十年乐云seo
  • 如何利用视频网站做推广建设机械网站哪家好
  • 网站建设柒金手指下拉二一运城网站建设公司
  • 新西兰网站开发专业定制网站开发报价单
  • 的建站公司中小型门户网站
  • 现在门户网站建设还有人弄吗做网站栏目都包括什么
  • 网站页面设计与制作实践盱眙县建设局网站
  • 网站打开出现建设中道滘镇仿做网站
  • 四川华远建设工程有限公司网站学企业管理培训班
  • 西安公司网站怎么制作公众号文章怎么制作
  • 什么网站做简历免费南京软件外包公司
  • 长沙做黄叶和网站的公司有哪些wordpress4.3 撰写设置
  • 个人注册网站怎么注册无线网被附近多个
  • 做资源下载网站好吗星悦做任务网站是
  • 建设网站论文网站建设需要用到iis吗
  • 怎样建设简单的网站外宣做网站宣传
  • 北京外贸网站建设wordpress单本小说模板
  • 加强门户网站建设的通知班级优化大师下载安装最新版
  • 未备案的网站网站建设图标素材免费
  • 清洁设备网站模版网站上的字体大小
  • 手机能建设网站忙广州省建设厅官方网站