JAVA设计模式之代理模式

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编

大家好,又见面了,我是全栈君。

代理模式应用场景举例

比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编程的思想来考虑软件的类结构,这个销售汽车的代理也是一个类了。

【代理模式解释】

类型:结构模式

对一些对象提供代理,以限制那些对象去访问其它对象。

代理模式-JAVA代码实现

新建一个买车的接口:

public interface buy_car {
  public void buy_mycar();
}

 

新建一个people人类,具有买车的行为,所以实现接口buy_car

class people implements buy_car {
 
   private int cash;
   private String vip;
   private String username;
  
 @Override
 public void buy_mycar() {
  // TODO Auto-generated method stub
  System.out.print(username+"是vip 客户,可以直接购买新车!");
 }

public int getCash(){
      return cash;
   }
   public void setCash(int cash){
       this.cash = cash;
    }
   public String getUsername(){
       return username;
    }
   public void setUsername(String username){
       this.username = username;
    }
   public String getVip(){
       return vip;
    }
   public void setVip(String vip){
        this.vip = vip;
   }
}

people类不能拥有车,必须经过proxy代理类的认证,符合条件之后才可以拥有车辆,新建一个代理,这个代理类来考察当前的people是否有资格进行买车:

class proxyclass implements buy_car {
   
    private people people;
    public people getPeople(){
     return people;
    }
    public void setPeople(people people){
     this.people = people;
    }
    
 @Override
 public void buy_mycar() {
  // TODO Auto-generated method stub
  
  if (people.getVip() == "vip"){
      people.buy_mycar();
      return ;
     } 
    if(people.getCash()>=50000){
     System.out.println(people.getUsername()+"买了新车,交易结束!");
    }
    else
    {
     System.out.println(people.getUsername()+"钱不够,不能买车,继续比赛!");
    }
 }
}

最后创建一个客户端,用来模拟买车的行为:

public class run_main {


 public static void main(String[] args) {
  // TODO Auto-generated method stub
      people people_1 =new people();
      people_1.setCash(60000);
      people_1.setUsername("jeck");


      people people_2 =new people();
      people_2.setCash(40000);
      people_2.setUsername("rose");
     
      people people_3 =new people();

      people_3.setCash(0);
      people_3.setUsername("tom");
      people_3.setVip("vip");
     
      proxyclass proxy_buy = new proxyclass();
      proxy_buy.setPeople(people_1);
      proxy_buy.buy_mycar();
     
      proxy_buy.setPeople(people_2);
      proxy_buy.buy_mycar();
     
      proxy_buy.setPeople(people_3);
      proxy_buy.buy_mycar();
           
 }

}

程序运行结果如下:

 jeck买了新车,交易结束!
 rose钱不够,不能买车,继续比赛!
 tom是vip 客户,可以直接购买新车!

 

代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同样一个接口。

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121352.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月11日 上午9:00
下一篇 2022年3月11日 上午9:00


相关推荐

  • 什么是Web 2.0——下一代软件的设计模式和商业模式 (全文翻译—1 博客版序)

    什么是Web 2.0——下一代软件的设计模式和商业模式 (全文翻译—1 博客版序)这篇文章,是经O’Reilly公司的TimO’Reilly先生授权后,进行全文翻译、出版的。包括:杂志节选版和网络全文版。转载:请遵循CC版权,保留原文作者和翻译作者信息,以及文章链接。感谢:互联网周刊的李洋提供了许多建议。几个文章版本链接:英文原文:http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/

    2022年7月21日
    15
  • 设计模式(八)装饰器模式Decorator(结构型)

    设计模式(八)装饰器模式Decorator(结构型)设计模式 八 装饰器模式 Decorator 结构型 1 概述若你从事过面向对象开发 实现给一个类或对象增加行为 使用继承机制 这是所有面向对象语言的一个基本特性 如果已经存在的一个类缺少某些方法 或者须要给方法添加更多的功能 魅力 你也许会仅仅继承这个类来产生一个新类 这建立在额外的代码上 通过继承一个现有类可以使得子类在拥有自身方法的同时

    2026年3月19日
    1
  • php设计模式之工厂模式

    php设计模式之工厂模式工厂模式的学习

    2022年7月25日
    11
  • 设计模式之责任链模式(职责链模式)

    设计模式之责任链模式(职责链模式)前言在现实生活中 一个事件需要经过多个对象处理是很常见的场景 例如 采购审批流程 请假流程等 公司员工请假 可批假的领导有部门负责人 副总经理 总经理等 但每个领导能批准的天数不同 员工必须根据需要请假的天数去找不同的领导签名 也就是说员工必须记住每个领导的姓名 电话和地址等信息 这无疑增加了难度 在计算机软硬件中也有相关例子 如总线网中数据报传送 每台计算机根据目标地址是否同自己的地址相同来决定是否接收 还有异常处理中 处理程序根据异常的类型决定自己是否处理该异常 还有 Struts2 的拦截器 J

    2026年3月18日
    1
  • 设计模式23模式介绍迭代器_二十三种设计模式

    设计模式23模式介绍迭代器_二十三种设计模式一、什么是设计模式设计模式是一套被反复使用、多数人知晓的、经过分类编写的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式使代码编程真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖头一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式都有响应的原理与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题…

    2025年7月30日
    4
  • 一句话评论设计模式六大原则

    原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都

    2021年12月25日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号