静态代理

模拟经纪人与明星开演唱会

public interface Star {
 /**
  * 面谈
  */
  void confer();
  /**
   * 签合同
   */
  void signContract();
  /**
   * 唱歌
   */
  void sing();
  /**
   * 收尾款
   */
  void coleectMoney();
}

public class RealStar implements Star {
  private String name;
  
 public RealStar(String name) {
   this.name = name;
  }
 @Override
 public void confer() {
   System.out.println("RealStar.confer()");
 }
 @Override
 public void signContract() {
  System.out.println("RealStar.signContract()");
 }
 @Override
 public void sing() {
  System.out.println(this.name +"唱歌");
 }
 @Override
 public void coleectMoney() {
   System.out.println("RealStar.coleectMoney()");
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}
public class ProxyStar implements Star{
  private Star s;
  
 @Override
 public void confer() {
   System.out.println("ProxyStar.confer()");;
 }
 @Override
 public void signContract() {
  System.out.println("ProxyStar.signContract()");  
 }
 @Override
 public void sing() {
  if(s instanceof RealStar)
  {
   RealStar star=(RealStar)s;
   star.sing();
  }else {
   s.sing();
  }
 }
 @Override
 public void coleectMoney() {
  System.out.println("ProxyStar.coleectMoney()");
 }
 public ProxyStar(Star ps) {
  this.s = ps;
 }
}
/**
 * 客户端
 * @author 小帆敲代码
 *
 */
public class Client {
 public static void main(String[] args) {
  Star real=new RealStar("Jay");
  Star proxy=new ProxyStar(real);
  proxy.confer();
  proxy.signContract();
  proxy.sing();
  proxy.coleectMoney();
 }
}

设计模式之GOF23代理模式02的更多相关文章

  1. 设计模式之GOF23代理模式01

    代理模式 核心作用: -通过代理,控制对对象的访问 -可以详细控制机制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做 后置处理(AOP的微观实现) 应用场景 -安全代理:屏蔽 ...

  2. 设计模式之GOF23代理模式03

    动态代理 public class StarHandler implements InvocationHandler{  Star realStar; public StarHandler(Star ...

  3. 设计模式之GOF23原型模式02

    利用序列化和反序列化完成深复制 ByteArrayOutputStream bos=new ByteArrayOutputStream();  ObjectOutputStream oos=new O ...

  4. 设计模式之GOF23工厂模式02

    抽象工厂模式 不能添加单个产品,产品族 public interface Seat {  void anmo();}class GoodSeat implements Seat { @Override ...

  5. java设计模式之Proxy(代理模式)

    java设计模式之Proxy(代理模式) 2008-03-25 20:30 227人阅读 评论(0) 收藏 举报 设计模式javaauthorizationpermissionsstringclass ...

  6. Java设计模式之《代理模式》及应用场景

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6525527.html 代理模式算是我接触较早的模式,代理就是中介,中间人.法律上也有代理, ...

  7. Java设计模式:Proxy(代理)模式

    概念定义 代理模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式. 使用代理模式的原因有: 中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象, ...

  8. 简介Python设计模式中的代理模式与模板方法模式编程

    简介Python设计模式中的代理模式与模板方法模式编程 这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下 代理模式 Prox ...

  9. 设计模式系列之代理模式(Proxy Pattern)——对象的间接访问

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

随机推荐

  1. ORA-0245

    经常有客户报错ORA-0245 1.11.2 rac环境, rman存在snap控制文件路径,默认是文件系统[非共享,导致备份控制文件报错] 解决方法:将snap路径配置到ASM磁盘组共享路径[nfs ...

  2. PHP函数:fwrite

    fwrite()  - 写入文件(可安全用于二进制文件) 说明: fwrite ( resource $handle , string $string [, int $length ] ) : int ...

  3. kubernetes删除pod,pod一直处于Terminating状态

    删除pod,pod一直处于Terminating状态 [root@yxz-cluster01 deploy_yaml]# kubectl get pod -n yunanbao NAME READY ...

  4. java Int类型转为double 类型;string转double

    int a=12; double b=(double)a; or double c=Double.valueOf((double)a); string a_s="12"; doub ...

  5. 关于synergy的问题

    报错信息主要集中在以下两条: ERROR: ssl error occurred (system call failure) ERROR: eof violates ssl protocol 通过查找 ...

  6. Git速查表大全

  7. GIT分布式版本控制

    1.1Git简介 linus 用C语言编写 2005年诞生 分布式版本管理系统 速度快,适合大规模,跨地区多人协同开发 Git不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性,例如大多数的分 ...

  8. Zabbix CPU utilization监控参数

    工作中查看Zabbix linux 监控项的时候对linux 监控的cpu使用的各个参数没怎么明白,特意查看了下资料 Zabbix linux模板下的CPU utilization是自带的监控Linu ...

  9. 查看 Nginx 的日志目录

    即便是 docker 容器,对应的目录也是一样的 > /var/log/nginx/xxx.log

  10. Qt提示:setLayout: Attempting to set QLayout "" on MainWindow "MainWindow", which already has a layout

    如题,出现这个的原因是,如果你的窗口继承的是QMainwindow,需要设置setCentralWidget(); 如下: QWidget * widget = new QWidget ( mainW ...