静态代理模式(不被推荐使用)
2016-01-09 21:34
302 查看
抽象角色
package com.ygl.proxy;
public abstract class Subject {
public abstract void request();
}
//===================================
代理角色
package com.ygl.proxy;
public class ProxySubject extends Subject{
private RealSubject realSubject;//代理角色内部引用了真实角色
@Override
public void request() {
this.preRequest();
if(null==realSubject){
realSubject=new RealSubject();
}
realSubject.request();//真实角色所完成的事情
this.postRequest();
}
private void postRequest() {
System.out.println("post request");
}
private void preRequest(){
System.out.println("pre request");
}
}
//===================================
真实角色
package com.ygl.proxy;
public class RealSubject extends Subject{
@Override
public void request() {
System.out.println("RealSubject");
}
}
//==============================
测试
package com.ygl.proxy;
public class Client {
public static void main(String[] args) {
Subject subject=new ProxySubject();
subject.request();
}
}
package com.ygl.proxy;
public abstract class Subject {
public abstract void request();
}
//===================================
代理角色
package com.ygl.proxy;
public class ProxySubject extends Subject{
private RealSubject realSubject;//代理角色内部引用了真实角色
@Override
public void request() {
this.preRequest();
if(null==realSubject){
realSubject=new RealSubject();
}
realSubject.request();//真实角色所完成的事情
this.postRequest();
}
private void postRequest() {
System.out.println("post request");
}
private void preRequest(){
System.out.println("pre request");
}
}
//===================================
真实角色
package com.ygl.proxy;
public class RealSubject extends Subject{
@Override
public void request() {
System.out.println("RealSubject");
}
}
//==============================
测试
package com.ygl.proxy;
public class Client {
public static void main(String[] args) {
Subject subject=new ProxySubject();
subject.request();
}
}
相关文章推荐
- 5.3.4 defaultdict对象
- Ruby IDE: RadRails 下载使用
- 注解形式Controller方法参数
- iOS中UIStackView相关属性理解
- iOS应用程序内购/内付费
- Swift开发IOS-UIProgressView
- java NIO与IO
- 归并排序
- Java学习之网络编程实例
- mysql常用命令
- hdoj--3666--THE MATRIX PROBLEM(差分约束+SPFA深搜)
- pyhton对网络设备的日常巡检
- 实现折叠的uitableviewcell效果
- go学习与记录
- UE4 环境搭建(一)
- hdoj--3666--THE MATRIX PROBLEM(差分约束+SPFA深搜)
- Fragment 初学
- pyhton对网络设备的日常巡检
- IOCP 基本模型 事例
- nyoj999