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

网站平台在线提交功能wordpress后台登陆500错误

网站平台在线提交功能,wordpress后台登陆500错误,做网站难吗,央视网商城DAY11.3 Java核心基础 反射(第三篇) 前两篇我们学习了反射的概念和基本操作 实际开发中,反射应用于那里? 动态代理 java中的动态代理就是一个重要的作用 代理模式 代理模式是java中常用的设计模式 指的是在处理一个业务逻辑…

DAY11.3 Java核心基础

反射(第三篇)

前两篇我们学习了反射的概念和基本操作

实际开发中,反射应用于那里?

动态代理

java中的动态代理就是一个重要的作用

代理模式

代理模式是java中常用的设计模式

指的是在处理一个业务逻辑的时候通过代理的形式来完成,委托方委托代理方完成某些工作

委托方和代理方有一个共性:都具备完成业务的能力

代理分为委托方和代理方

委托方很好理解,代理方就把它想想为跑腿或者中介

image-20250314175759982

静态代理和动态代理

  • 静态代理:预先写好代理类的方法,在编译时期代理类的class文件就生成了
  • 动态代理:在编译时期没有确定具体的代理类,在程序运行期间根据java代码的指示动态生成
  • 动态代理更加灵活,可以很方便了对代理类的方法进行统一的管理,不需要修改每一个代理类的方法
    动态代理是通过反射机制实现的,所以动态代理是反射重要的应用之一

如何在java程序中表现出来呢?

在java中,我们把对象所具备的能力封装为接口,所以java中代理模式就是委托类和代理类实现了相同的接口,代理类可以替代委托类完成一些业务以外的工作

代理类和委托类通过依赖注入的方式进行关联,需要将委托类注入到代理类的成员变量

访问委托类是通过代理类间接访问的,所以可以为程序预留出可以处理的空间,可以在不影响原来的业务上扩展功能,这就是代理模式的优点

静态代理

静态代理模式示例(销售手机):

销售 iPhone 和华为手机

1、定义一个接口 Phone 表示销售手机的功能

2、定义两个类分别实现销售 iPhone 和华为的功能

创建一个手机的接口来抽象销售手机的方法

public interface Phone {public void salePhone();
}

实体类销售苹果手机

public class Apple implements Phone{@Overridepublic void salePhone() {System.out.println("销售苹果手机");}
}

实体类销售华为手机

public class Huawei implements Phone{@Overridepublic void salePhone() {System.out.println("销售华为手机");}
}

如果我们要实现更好的销售量以及更好的管理那么可以使用到代理类,就相当于把东西交给中介来卖,这个手机中介可以销售多款手机

创建一个PhoneProxy代理类来销售手机:

public class PhoneProxy implements Phone{private Phone phone;public PhoneProxy(Phone phone) {this.phone = phone;}@Overridepublic void salePhone() {System.out.println("代理类,在这可以完成业务以外的工作");phone.salePhone();}
}

测试代码:

    public static void main(String[] args) {PhoneProxy proxy1 = new PhoneProxy(new Apple());proxy1.salePhone();PhoneProxy proxy2 = new PhoneProxy(new Huawei());proxy2.salePhone();}
}

image-20250314201730636

代理销售汽车案例:

创建Car对象

public interface Car{public void saleCar();
}

销售宝马车

public class BWM implements Car{@Overridepublic void saleCar() {System.out.println("销售宝马");}
}

销售奔驰车

public class Benz implements Car{@Overridepublic void saleCar() {System.out.println("销售奔驰车");}
}

测试:

public static void main(String[] args) {CarProxy carProxy1 = new CarProxy(new BWM());CarProxy carProxy2 = new CarProxy(new Benz());carProxy1.saleCar();carProxy2.saleCar();
}

image-20250314210223924

可以实现销售多款手机和汽车,可以在不影响委托类的业务基础上扩展功能(比如统计买了几台手机…)

上述就是一个静态代理,优势在业务扩展的时候不需要修改委托类,只需要修改代理类的方法即可,在分离不同业务的同时保证代码的整洁性

动态代理

现在的需求是创建一个厂商,既可以代理销售手机又可以代理销售汽车

怎么实现呢?

难道要注入两个对象吗,NoNoNo,这样太不科学了

此时无法使用静态代理,因为无论是 手机代理还是 汽车代理,都只能代理一种商品

静态代理的问题就在于代理类已经写好了,当需求变更的时候无法修改

类似这种问题,一个代理可以同时代理 N 种商品的模式,代理类就一定不能提前写好,而是根据程序运行的具体情况动态生成的

代理对象,必须要创建,抽象类是无法创建对象的

代理类是不存在的,程序运行过程中动态创建一个类,从而创建该类对象,就叫做动态代理对象

动态代理的流程

1、只需要编写委托类

2、不需要编写代理类

3、程序运行过程中根据具体的需求动态创建一个代理类

4、根据动态创建出来的代理类来创建实例化对象

动态生成类的功能由谁来完成?

InvocationHandler 接口,通过该接口可以在程序运行期间动态生成代理类

根据委托对象创建动态代理对象

1、创建动态代理类

2、创建对象

代理类需要实现和委托类一样的接口

根据委托类所实现的接口来创建代理类

类创建好之后需要加载到 JVM 中,由类加载器进行加载

public class MyInvocationHandler implements InvocationHandler {public Object obj;public Object bind(Object obj) {this.obj = obj;return Proxy.newProxyInstance(MyInvocationHandler.class.getClassLoader(),obj.getClass().getInterfaces(),this);}// 代理类代理的方法@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("这里是动态代理类,这里可以扩展方法");Object result = method.invoke(obj, args);return result;}
}
public static void main(String[] args) {MyInvocationHandler myInvocationHandler = new MyInvocationHandler();Car carProxy = (Car) myInvocationHandler.bind(new Benz());carProxy.saleCar();
}

输出:

image-20250315105735720


文章转载自:

http://NOQiKA8S.xhLpn.cn
http://0plDttYd.xhLpn.cn
http://Ss4ZE5Hc.xhLpn.cn
http://mQO3kkCe.xhLpn.cn
http://5r4aZ355.xhLpn.cn
http://uVKCydkr.xhLpn.cn
http://6DStPums.xhLpn.cn
http://t9eSC5yc.xhLpn.cn
http://SV290S6A.xhLpn.cn
http://81iuYhsB.xhLpn.cn
http://HrJIVb0a.xhLpn.cn
http://8RAdEbPv.xhLpn.cn
http://E8XZ9FHh.xhLpn.cn
http://foEsm4nq.xhLpn.cn
http://degP6493.xhLpn.cn
http://E0eAyScK.xhLpn.cn
http://Whaclh8k.xhLpn.cn
http://jAZzUuVL.xhLpn.cn
http://lQlN4V3h.xhLpn.cn
http://w1BiNB0l.xhLpn.cn
http://09hLFrLO.xhLpn.cn
http://oPcEWwUk.xhLpn.cn
http://QDwuvgjE.xhLpn.cn
http://xplWRj5E.xhLpn.cn
http://7zKV5q8H.xhLpn.cn
http://wj1QDh0q.xhLpn.cn
http://f8WOP0hH.xhLpn.cn
http://bxTGnBZa.xhLpn.cn
http://9NDWmRs6.xhLpn.cn
http://9aW6KSgd.xhLpn.cn
http://www.dtcms.com/wzjs/710952.html

相关文章:

  • 可以随意建国际商城的网站吗用代码做网站
  • 好的网站设计模板杭州网站制
  • 苏州 网站建设 app网站整合discuz论坛
  • 音乐网站程序源码wordpress占用CPU高
  • 商城网站商家入驻功能wordpress 编辑器添加自定义按钮
  • 微信小程序后端开发语言wordpress platinum seo 插件
  • 网站加载速率国内优秀网页网站
  • 优化网站排名的方法wordpress4.9中文
  • 新手学做网站要花钱么网站关键字排名提升工具
  • 永兴网站制作嘉兴网站建设公司
  • 做网站大约需要多少钱企业微信app下载安装官方最新版
  • 石家庄建站平台官方网站平台下载软件
  • 东营网站wordpress ssl 错位
  • 门户网站兴化建设局 金wordpress相关面试问题
  • 北京地区网站制作公司全球顶尖设计网站
  • 兰考县住房和城乡建设局网站crazyuncle WordPress
  • 网站上的地图代码美术类网站建设费用
  • 怒江网站制作杭州上城区网站建设
  • 最牛论坛网站建设企业银行官方网站
  • 做网站坚持多少年会有起色天元建设集团有限公司第十一建筑工程分公司
  • 备案 网站名称 修改四川省第十一建筑公司官网
  • 网站的优势是什么意思中文企业网站设计欣赏
  • 地板网站建设杭州网站免费制作
  • 调兵山 网站建设郑州seo外包v1
  • 重庆网站优化下步我院将建设网站信息保密
  • 海南网站备案中国建设监理工程协会网站
  • 深训网站怎样把网站做的好看
  • 自助申请海外网站聚合搜索引擎入口
  • iis7 建立网站成都专业logo设计公司
  • 东莞网站建设设计公司一级a做囗爰片免费网站