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

第二章 营销型网站建设测验推荐几个安全免费的网站

第二章 营销型网站建设测验,推荐几个安全免费的网站,做网站负责人有法律风险吗,营销型网站建设必须的步骤包括2019独角兽企业重金招聘Python工程师标准 代理模式 1#xff0c;什么是代理模式#xff1f; 代理模式的作用是#xff1a;为其他对象提供一种代理以控制对这个对象的访问。2#xff0c;代理模式有什么好处#xff1f; 在某些情况下#xff0c;一个客户不… 2019独角兽企业重金招聘Python工程师标准 代理模式 1什么是代理模式 代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。2代理模式有什么好处 在某些情况下一个客户不想或者不能直接引用另一个对象而代理对象可以在客户端和目标对象之间起到中介的作用。3代理模式一般涉及到的角色有 抽象角色声明真实对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。代理角色代理对象内部含有目标对象的引用从而可以在任何时候操作目标对象代理对象提供一个与目标对象相同的接口以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后执行某个操作而不是单纯地将调用传递给目标对象同时代理对象可以在执行真实对象操作时附加其他的操作相当于对真实对象进行封装。真实角色定义了代理对象所代表的目标对象代理角色所代表的真实对象是我们最终要引用的对象,定义了代理对象所代表的目标对象。public abstract class AbstractObject {//操作public abstract void operation(); } public class RealObject extends AbstractObject {Overridepublic void operation() {//一些操作System.out.println(一些操作);} } public class ProxyObject extends AbstractObject{RealObject realObject new RealObject();Overridepublic void operation() {//调用目标对象之前可以做相关操作System.out.println(before); realObject.operation(); //调用目标对象之后可以做相关操作System.out.println(after);} } public class Client {public static void main(String[] args) {// TODO Auto-generated method stubAbstractObject obj new ProxyObject();obj.operation();} }案例二public interface FontProvider {Font getFont(String name); } public abstract class ProviderFactory {public static FontProvider getFontProvider() {return new FontProviderFromDisk();} } public class Main() {public static void main(String[] args) {FontProvider fontProvider ProviderFactory.getFontProvider();Font font fontProvider.getFont(微软雅黑);......} } //现在我们希望给他加上一个缓存功能我们可以用静态代理来完成 public class CachedFontProvider implements FontProvider {private FontProvider fontProvider;private MapString, Font cached;public CachedFontProvider(FontProvider fontProvider) {this.fontProvider fontProvider;}public Font getFont(String name) {Font font cached.get(name);if (font null) {font fontProvider.getFont(name);cached.put(name, font);}return font;} } /* 对工厂类进行相应修改代码使用处不必进行任何修改。 这也是面向接口编程以及工厂模式的一个好处 */ public abstract class ProviderFactory {public static FontProvider getFontProvider() {return new CachedFontProvider(new FontProviderFromDisk());} } 案例三考虑以下各种情况有多个提供类每个类都有getXxx(String name)方法每个类都要加入缓存功能使用静态代理虽然也能实现但是也是略显繁琐需要手动一一创建代理类。 public abstract class ProviderFactory {public static FontProvider getFontProvider() {...}public static ImageProvider getImageProvider() {...}public static MusicProvider getMusicProvider() {...}...... } 使用动态代理怎么完成呢 public class CachedProviderHandler implements InvocationHandler {private MapString, Object cached new HashMap();private Object target;public CachedProviderHandler(Object target) {this.target target;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Type[] types method.getParameterTypes();if (method.getName().matches(get.) (types.length 1) (types[0] String.class)) {String key (String) args[0];Object value cached.get(key);if (value null) {value method.invoke(target, args);cached.put(key, value);}return value;}return method.invoke(target, args);} } public abstract class ProviderFactory {public static FontProvider getFontProvider() {ClassFontProvider targetClass FontProvider.class;return (FontProvider) Proxy.newProxyInstance(targetClass.getClassLoader(),new Class[] { targetClass },new CachedProviderHandler(new FontProviderFromDisk()));} } 动态代理 代理本来应该自己做的事情却请了别人来做被请的人就是代理对象。 举例春季回家买票让人代买动态代理在程序运行过程中产生的这个对象,此对象其实就是我们刚才反射讲解的内容所以动态代理其实就是通过反射来生成一个代理。在Java中java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口通过使用这个类和接口就可以生成动态代理对象。JDK提供的代理只能针对接口做代理。我们有更强大的代理cglib。Proxy类中的方法创建动态代理类对象 public static Object newProxyInstance(ClassLoader loader,Classpublic class MyInvocationHandler implements InvocationHandler {private Object target; // 目标对象public MyInvocationHandler(Object target) {this.target target;}Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println(权限校验);Object result method.invoke(target, args);System.out.println(日志记录);return result; // 返回的是代理对象} } public interface StudentDao {public abstract void login();public abstract void regist(); } public class StudentDaoImpl implements StudentDao {Overridepublic void login() {System.out.println(登录功能);}Overridepublic void regist() {System.out.println(注册功能);} } /* * 用户操作接口 */ public interface UserDao {public abstract void add();public abstract void delete();public abstract void update();public abstract void find(); } public class UserDaoImpl implements UserDao {Overridepublic void add() {System.out.println(添加功能);}Overridepublic void delete() {System.out.println(删除功能);}Overridepublic void update() {System.out.println(修改功能);}Overridepublic void find() {System.out.println(查找功能);} } public class Test {public static void main(String[] args) {UserDao ud new UserDaoImpl();ud.add();ud.delete();ud.update();ud.find();System.out.println(-----------);// 我们要创建一个动态代理对象// 我准备对ud对象做一个代理对象MyInvocationHandler handler new MyInvocationHandler(ud);UserDao proxy (UserDao) Proxy.newProxyInstance(ud.getClass().getClassLoader(), ud.getClass().getInterfaces(), handler);proxy.add();proxy.delete();proxy.update();proxy.find();System.out.println(-----------);StudentDao sd new StudentDaoImpl();MyInvocationHandler handler2 new MyInvocationHandler(sd);StudentDao proxy2 (StudentDao) Proxy.newProxyInstance(sd.getClass().getClassLoader(), sd.getClass().getInterfaces(), handler2);proxy2.login();proxy2.regist();} } 转载于:https://my.oschina.net/u/3676262/blog/1552877
http://wiki.neutronadmin.com/news/482078/

相关文章:

  • 怎么知道公司网站是哪家做的如何做网站设计
  • 企业网站备案需要可做商业用途的图片网站
  • 推广运营公司网站长沙做网站咨询公司
  • 成都的网站建设无锡宏腾网站建设
  • 万网域名注册查询重庆网站推广优化
  • 网站内链是什么 怎么做个人网页设计与友情链接论文
  • 上海共富新村网站建设工信部企业网站备案吗
  • 公司网站的建设哪家好点击关注进入公众号
  • 北京征集网站建设越秀金融大厦
  • 石家庄站分布图企业品牌策划方案
  • 北语网站app那些网站做的比较好
  • 岷县网站建设一个人免费观看视频在线中文
  • 如何对一个网站进行seo美丽乡村网站建设策划书
  • 网站采集被降权手机资讯网站源码
  • 免费网站免费进入在线百度pc权重
  • 彩票网站开发有连带各大网站地区是怎样和做的
  • 网站后台账户密码wordpress会员评论
  • 动画视频模板网站云南最新消息
  • 企业网站开发合同惠州seo关键字排名
  • 社工站建站流程网站开发客户提供素材
  • 瑞昌网站建设深圳龙华区福城街道
  • 网站开发包括几个部分自助建站编辑器
  • 如何让网站被收录这是我自己做的网站
  • 网站做任务 炸金花网站文章页图片大全
  • 青岛网站广州网站建设建航科技
  • 网站推广经典案例开发 网站 团队
  • 深圳建网站的专业公司湖南省建设监理协会官网
  • 网站怎么做移动适配工信部网站备案信息
  • 微信网站需要一个域名要怎么做网店代运营怎么收费
  • 注册电气师在哪个网站做变更wordpress与thinkphp