`
sammor
  • 浏览: 413278 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

面向方法编程AOP学习之二 —— “原始时代”

阅读更多

引言:

       继前一章(面向方法编程AOP学习之一 —— 新知新觉 )的对AOP的了解。

       现有着进一步的体验AOP的实现方式,本节以简单的小例子,来感受AOP的一种体现。

 

场景 制造

场景一

     有位表演者平时都是在路边上卖艺的,突然他的表演能力被某一老板看上,把他带到一个剧院里,告诉他他只要照原来在路上表演的一样就可以,其他的事情不用管,待表演结束的时候,老板会给他一定的酬劳的。

     这老板想利用这个表演者的表演来赚一笔钱。

     就这样,一天的工作开始了。表演即将开始。

 

角色:

 

表演者:Player
老板:Boss
剧院:ProxyTheatre 

 

作用:

表演者(Player):

/**
 * 表演者,只会表演,不会赚钱
 */
public class Player implements IPlayer {
	@Override
	public void play() {
		System.out.println("player is singing");
	}
}
 

老板(Boss):

package chat1;

/**
 * 很会赚钱的老板
 */
public class Boss {

	/**
	 * 卖票
	 */
	public void shellTickit() {
		System.out.println("shell many tickets ");
	}

	/**
	 * 给酬劳
	 */
	public void givePlayerMoney() {
		System.out.println("give a little money to player.");
	}

	/**
	 * 逃跑
	 */
	public void runAway() {
		System.out.println("The play is broken , the boss run away in a hurry");
	}
}
 

 

剧院(ProxyTheatre):

package chat1;

/**
 * 表演的地儿
 */
public class ProxyTheatre {

	private Boss boss;

	private Player player;

	/**
	 * 演出开始
	 */
	public void perform() {
		boss.shellTickit();
		try {
			player.play();
		} catch (Exception e) {
			boss.runAway();
		}
		boss.givePlayerMoney();
	}

	public void setAudience(Boss audience) {
		this.boss = audience;
	}

	public void setPlayer(Player player) {
		this.player = player;
	}

}
 

演出开始

@Test
	public void testChat1() {
		ProxyTheatre proxy = new ProxyTheatre();
		proxy.setAudience(new Boss());
		proxy.setPlayer(new Player());
		proxy.perform();
	}

 

演出过程演示

 

shell many tickets 
player is singing
give a little money to player.
 

类图:

                           

 

 

总结:

       当然,这是一种简单的实现方式,从侧面反应出了AOP的一种思想,从告诉我们,在Player执行play()之前或之后,去处理相应的一些动作,而不需要Player的play()方法中,去修改其中的实现代码。

       但里面也暴露出了一定的问题,难道我为了每一个方法进行处理,都需要另上一个代理执行类(剧院)来处理吗?这远远达不到我们想要的要求。在接下来的学习中,相信有更多的惊喜的实现方式。

 

下一节:

       面向方法编程AOP学习之三 —— “进化论”

  • 大小: 40.7 KB
2
8
分享到:
评论

相关推荐

    7Spring AOP盗梦空间之二——获得返回值AfterReturnning

    通过阅读《Spring AOP盗梦空间之二——获得返回值AfterReturnning》这篇博文(链接:https://garrincha.iteye.com/blog/2111779),你可以获得更详细的实践指导和示例代码。同时,结合提供的压缩包文件"Spring_AOP_...

    使用动态代理面向切面编程(AOP)

    面向切面编程(AOP)是一种编程范式,主要用于处理系统中的横切关注点,比如日志、事务管理、性能监控等。动态代理是实现AOP的一种常见技术,它允许我们在运行时创建对象的代理,从而在不修改原有代码的情况下添加...

    Spring Aop面向切面的java代码

    总结一下,Spring AOP提供了JDK动态代理和CGLIB代理两种方式来实现面向切面编程,通过这两种方式,我们可以方便地在不修改原始业务代码的前提下,添加额外的功能,如日志、事务控制等。`SprigAopJdk`和`...

    基于Bytebuddy的Java Agent AOP框架.zip

    这正是AOP的核心功能——在不修改原始代码的情况下,动态插入切面代码。 3. **Java Agent**: Java Agent是JVM的一部分,它在JVM启动时或者类加载时可以对类的字节码进行修改。在Java中,我们使用`@Premain`和`@...

    spring3.0.5的aop使用

    本文将深入探讨Spring 3.0.5版本中的AOP(面向切面编程)特性,以及如何使用它来提升代码的可维护性和模块化。AOP是一种编程范式,它允许程序员定义“切面”,这些切面可以包含业务逻辑的各个部分,如日志、事务管理...

    AOP 解决紧密耦合的难题.doc

    面向方面编程(AOP)作为一种补充面向对象编程(OOP)的设计模式,旨在解决软件开发中常见的耦合问题,特别是那些在大型企业级应用中尤为突出的问题。在《AOP解决紧密耦合的难题》这一文档中,作者深入探讨了AOP如何...

    aopalliance-1.0.jar+aspectjweaver.jar

    AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,旨在通过将关注点分离,提高软件的模块化程度。AOP Alliance是Java世界中的一个开源项目,它提供了一个标准API,使得不同的AOP框架可以互操作,...

    Spring动态代理第三方依赖jar.zip_aopalliance_1.0.jar_aspectjrt_aspectjweav

    Spring的核心特性之一就是它的动态代理机制,这使得我们可以实现面向切面编程(AOP)。本压缩包包含的是Spring动态代理中需要用到的一些关键第三方依赖,包括aopalliance-1.0.jar、aspectjrt-1.7.2.jar以及...

    AOP 的利器 ASM 3.0

    随着面向切面编程(Aspect-Oriented Programming,简称AOP)技术的发展,代码的动态生成已成为Java领域中不可或缺的一部分。本文将详细介绍一种轻量级的Java字节码操控框架——ASM 3.0,并探讨其如何帮助实现AOP。 ...

    Spring本质系列(2)AOP共3页.pdf.zip

    【标题】"Spring本质系列(2)AOP共3页.pdf.zip" 提供的信息表明,这是一个关于Spring框架中核心概念AOP(面向切面编程)的深入解析文档,共有3页内容。通常,Spring的AOP部分会涵盖如何在应用程序中实现横切关注点...

    Spring AOP的静态代理和动态代理,转移到调用处理器一个集中的方法中处理.docx

    在Spring AOP框架中,动态代理机制被广泛应用于AOP(面向切面编程)的实现。通过代理,Spring可以在方法调用之前、之后或者异常发生时插入额外的代码,如日志记录、事务管理等,这就是AOP的核心——切面。 总结起来...

    Learning:学习之路--Spring AOP,Spring MVC等原始码元深入解析

    本学习资源主要聚焦于Spring的重要组成部分——AOP(面向切面编程)和Spring MVC(模型-视图-控制器)的源码深度解析,旨在帮助你更深入地理解这两个核心模块的工作原理和设计思想。 Spring AOP是Spring框架的一个...

    Java动态代理(Spring Aop原理)

    Spring AOP(面向切面编程)正是利用了这一特性来实现其核心功能——横切关注点的分离。下面我们将深入探讨Java动态代理与Spring AOP的原理。 Java动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang....

    基于AOP的智能web缓存框架.pdf

    为此,邓磊等人提出了一种基于面向方面编程(Aspect-Oriented Programming, AOP)技术的智能Web缓存框架——ABWC(AOP-Based Web Cache),旨在解决现有缓存技术中存在的问题,提高Web应用系统的整体性能。...

    【原创】Mybatis学习笔记(一)——Spring集成Mybatis

    Spring的核心特性是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),它可以帮助开发者编写更少的代码并保持良好的结构。 3. Spring与Mybatis的集成: - 配置文件:在`...

    aspectjrt-1.7.4和aspectjweaver-1.7.4

    面向切面编程(AOP)是一种编程范式,它允许开发者定义“切面”,这些切面封装了跨越多个对象的关注点,如日志、事务管理、性能监控等。切面可以看作是横切关注点的模块化,这些关注点通常会分散到应用程序的各个...

    设计模式——装饰模式

    在Java或类似的面向对象编程语言中,装饰模式通常涉及到接口或抽象类,以及多个实现这些接口或继承这些抽象类的具体装饰类。装饰类持有对原始对象(也称为组件)的引用,并在调用原始方法时进行增强或添加额外的行为...

    java入门与提高——一个成就java高手的教程

    18. **Spring框架**:Spring是Java企业级应用的主流框架,包括依赖注入、AOP(面向切面编程)、MVC等概念。 七、数据库操作 19. **JDBC**:Java Database Connectivity允许Java程序连接和操作数据库,包括连接...

Global site tag (gtag.js) - Google Analytics