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

网站源码在线提取站长素材网站官网

网站源码在线提取,站长素材网站官网,163免费邮箱注册,免费空间最大的网盘文章目录 一、代理模式1、代理模式的好处和缺点1.1 代理模式理解加深 一、代理模式 为什么要学习代理模式? 代理模式是Spring AOP 以及 Spring MVC 的底层!!并且还是 JAVA 的23种设计模式之一!! 代理模式的分类&#…

文章目录

  • 一、代理模式
    • 1、代理模式的好处和缺点
      • 1.1 代理模式理解加深



一、代理模式

  • 为什么要学习代理模式?
代理模式是Spring AOP 以及 Spring MVC 的底层!!并且还是 JAVA 的23种设计模式之一!!
  • 代理模式的分类:

    • 静态代理

    • 动态代理

  • 什么是代理模式:

如果我们出现了诉求,但是因为某些原因我们本身不想或者无法完成这种诉求,我们就需要寻求他人的帮助,由他人来完成诉求,然后我们直接获取成果就可以了。

       打个比方:学生毕业之后工作是需要租房子的,但是学生通常找不到想要把房子租出去的房主,房主也不知道那些学生想要租房子。这时候学生和房主便可以找到中介,由中介来完成租房以及找房的这个过程。最终学生和房东只需要交笔中介费便达成了自己的目的。
  • 角色分析

    • 抽象角色: 比如房东想要把房子租出去这个行为。通常会使用接口或者抽象类来解决。
    • 真实角色: 被代理的角色,比如房东。
    • 代理角色: 代理真实角色,比如中介。代理真实角色后,我们一般会做一些附属操作,比如看房、签合同等。
    • 客户角色: 访问代理对象的人!比如租房子的人。


  • 代理模式代码演示

    • 抽象角色,房东将房子租出去的诉求

      public interface HouseRental {void houseRental();
      }
      
    • 真实角色,房东本身,也就是被代理的人

      public class Homeowner implements HouseRental{@Overridepublic void houseRental() {System.out.println("房东请求中介将房子出租出去");}
      }
      
    • 代理角色,比如中介,中介代理房东将房子出租出去,并且进行相关的操作

      public class Intermediary implements HouseRental{private Homeowner homeowner;public Intermediary(Homeowner homeowner) {this.homeowner = homeowner;}@Overridepublic void houseRental() {homeowner.houseRental();seeHouse();sign();fee();}//看房public void seeHouse(){System.out.println("中介带着看房子!");}//签合同public void sign(){System.out.println("和中介签署租赁合同!");}//收费用public void fee(){System.out.println("中介收取费用!");}}
      
    • 客户角色,比如想要租房子的人

      public class Client {public static void main(String[] args) {// 租户无需直接面对房东Homeowner homeowner = new Homeowner();// 房东找到了中介,请求把房主租出去Intermediary intermediary = new Intermediary(homeowner);// 租户找到了中介,请求租房子intermediary.houseRental();}
      }
      
    • 代码执行结果:
      在这里插入图片描述



1、代理模式的好处和缺点

  • 好处

    • 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务

    • 公共角色就交给代理角色!实现了业务的分工!

    • 公共业务发生扩展的时候,方便集中管理!

  • 缺点

    • 一个真实角色就会产生一个代理角色,代码量级会翻倍,开发效率会降低。

1.1 代理模式理解加深

  • 业务场景:公司需要对用户进行增删改查操作

    • 接口

      public interface UserService {// 业务场景:公司需要对人员进行增删改查操作void add();void update();void delete();void query();}
      
    • 真实角色

      public class UserServiceImpl implements UserService{@Overridepublic void add() {System.out.println("增加了一个用户");}@Overridepublic void update() {System.out.println("修改了一个用户");}@Overridepublic void delete() {System.out.println("删除了一个用户");}@Overridepublic void query() {System.out.println("查询用户信息");}
      }
      
    • 客户端角色访问

      public class Client {public static void main(String[] args) {UserServiceImpl userService = new UserServiceImpl();userService.update();}
      }
      
    • 执行结果:修改了一个用户


  • 业务变更:公司需要对用户进行增删改查操作的同时需要将对应的操作行为以日志的形式打印出来

    • 如果在操作的同时将日志打印出来的话其实也可以,但是会有大量的代码重复操作,并且代码原则通常是不修改原本好用的代码,如果有变动一般以新增代码为主

      • 接口以及真实角色实现类内容不变,创建代理角色

        public class Proxy implements UserService{// 将真实角色进行代理private UserServiceImpl userService;// 通过 Set 方法完成代理动作public void setUserService(UserServiceImpl userService) {this.userService = userService;}public void add() {log("add");userService.add();}public void delete() {log("delete");userService.delete();}public void update() {log("update");userService.update();}public void query() {log("query");userService.query();}// 打印日志public void log(String mag){System.out.println("执行了" + mag +"方法");}
        }
        
      • 客户端调用代理角色

        public class Client {public static void main(String[] args) {// 客户端调用真实角色UserServiceImpl userService = new UserServiceImpl();// 真实角色将部分内容交给代理角色处理Proxy proxy = new Proxy();proxy.setUserService(userService);proxy.add();proxy.delete();proxy.update();proxy.query();}
        }
        
      • 执行结果

        在这里插入图片描述

http://www.ds6.com.cn/news/5241.html

相关文章:

  • 网站维护的意义矿泉水软文广告500字
  • 温州cms模板建站cdq百度指数
  • 北京app建设 网站开发公司查关键词热度的网站
  • 设计模板免费网站产品怎么优化
  • 郑州网站加工seo自媒体培训
  • 佳木斯网站制作注册公司
  • 日语网站建设市场it培训机构培训费用
  • 广州海珠区网站建设制作一个网站的全过程
  • 包装设计作品百度网站排名优化
  • 做网站有必要?网店运营教学
  • 广州网站定制开发公司哪家好石家庄seo顾问
  • 网站背景音乐怎么做线上推广引流渠道
  • psd网站首页图片网络营销策划
  • 新手做网站的详细步骤网络商城应该如何推广
  • 金坛网站建设公司在线优化网站
  • wordpress子站点404市场营销毕业后找什么工作
  • 网站渗透入侵全部教程企业网站推广模式
  • 建设热电偶网站网推项目平台
  • 杭州电商直播培训班上海百度推广优化
  • 大型服装网站开发网络营销师月薪
  • 网站建设如果登录失败行业关键词搜索排名
  • 网站 被刷流量网络销售的好处和意义
  • 导航网站是怎么做的链接检测工具
  • 东莞专业网站建设营销型网站分为哪几种
  • 东莞网站开发技术公司电话流量精灵app
  • 专业做网站哪家便宜淘宝店铺买卖交易平台
  • 做微商什么是官方网站推广软件下载
  • 中山企业网站建设公司阿里云盘资源搜索引擎
  • 怎样知道哪个网站做推广好站长之家备案查询
  • 哪个网站企业邮箱最好长尾词挖掘