`

静态代理(JAVA设计模式)

阅读更多

代理:一个角色代表另一个角色来完成某些特定的功能,当我们需要在一个方法的前后添加逻辑的时候(日志,事务等)可以使用代理。

静态代理可以使用两种方式实现:一种是继承,一种是聚合。

1.定义接口Moveable

2.实现类Tank

3.在Tank的move方法前后添加时间日志(继承方式)或系统日志(聚合方式)


public interface Moveable {
	void move();
}

//需要代理的对象
public class Tank implements Moveable{
	
	public void move() {
		System.out.println("tank move");
	}

}


//第一种:以继承的方式实现静态代理,在方法前后添加逻辑
public class TimeProxy extends Tank{

	@Override
	public void move() {
		System.out.println("timeProxy start...");
		super.move();
		System.out.println("timeProxy end...");
	}

	public static void main(String[] args) {
		Moveable m = new TimeProxy();
		m.move();//调用了代理后的方法。
	}
}

//第二种:以聚合的方式实现代理类,为方法前后添加日志
public class LogProxy implements Moveable{
	Moveable m;
	public LogProxy(Moveable m) {
		this.m = m;
	}
	public void move() {
		System.out.println("move log start...");
		m.move();
		System.out.println("move log end...");
	}
	public static void main(String[] args) {
		Moveable mm = new Tank();
		mm = new LogProxy(mm);//这个代理类只能给Moveable接口的类进行代理,我们需要创建任意接口的代理类(动态代理)
		mm.move();
	}
}

分享到:
评论

相关推荐

    Java设计模式——代理设计模式(静态代理和动态代理)

    Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码

    java静态代理、动态代理、装饰设计模式

    NULL 博文链接:https://871656094.iteye.com/blog/2355335

    java 设计模式 静态代理模式

    //代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...

    java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar

    java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法调用 * ...

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    java 代理模式实现代码及设计详解:动态代理模式、静态代理模式

    代理模式_静态代理.zip

    设计模式之代理模式_静态代理的一个java实现的demo。主类在Client中。仅代码实现,可供初学者参考使用

    Java设计模式之代理模式

    Java设计模式之代理模式 1.代理模式 1.1 静态代理 1.2 动态代理 1.3.代理模式使用原因和应用方面

    Java设计模式:静态代理、装饰者、动态代理详解

    静态代理设计模式1.1 静态代理 – 实现步骤1.2 静态代理 – 逻辑图 & 源码示例1.3 静态代理 – 优缺2. 装饰者设计模式 – 类似静态代理2.1 装饰者模式 – 实现步骤2.2 装饰者模式 – 逻辑图 & 源码示例2.3 装饰者...

    java静态代理和动态代理详解

    Java中的代理是一种常见的设计模式,它可以帮助我们在不改变原有代码逻辑的情况下,对现有对象进行增强或扩展。在代理模式中,主要有两种类型:静态代理和动态代理。 1.静态代理: 静态代理是指在编译期间就已经确定...

    稳稳当当学java之设计模式(12).md

    本人的笔记,关于java基础中设计模式的内容 包括 1.作业回顾 2.内部类 2.1局部内部类 2.2静态内部类 2.3匿名内部类 3.设计模式 3.1单例模式 3.2代理模式 3.3观察者模式 3.4模板模式 4.练习

    java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar

    java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar /** * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法...

    java设计模式

    工厂方法: 在工厂方法设计模式中,工厂类不再负责产品的实列创建,而是将产品实例的创建交给抽象子类来 来负责创建。 c.抽象工厂:使用抽象工厂主要用于处理多产品族多级别产品的创建。 2.单例模式:确保有且只有...

    设计模式之代理模式Java实现和类设计图

    设计模式之代理模式Java实现和类设计图,包括静态代理和动态代理

    java静态代理与动态代理

     代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个...

    java代理service和自定义注解

    java静态代理设计模式,学习记录,简单自定义注解编写

    静态代理和动态代理Demo

    资源列举了设计模式中的静态代理和动态代理的简单java实现,jdk1.8版本经过测试验证,对于想学习设计模式的童靴应该有所帮助

    Java+单例+多例+工厂+枚举+动态代理===》演示

    单例设计模式案例演示 单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例。 #### 单例设计模式实现步骤 1. 将构造方法私有化,使其...

    java设计模式选择题复习题.doc

    行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器...

    Java设计模式之:静态代理和JDK动态代理(案例实战)

    代理模式:是一种设计模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能...

    Java 动态代理.md

    - 静态代理 - 动态代理 - JDK 动态代理 - CGLIB 动态代理 - Javassist 代理 - ASM 代理 这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、RPC远程调用、...

Global site tag (gtag.js) - Google Analytics