设计模式长期以来直是些经验丰富开发人员工具箱重要组成部分不幸是模式可以影响多个类所以它们也是侵入性、难于使用(和重用)本文是 AOP@Work 系列第 3 部分是篇由两部分组成文章在这篇文章中Nicholas Lesiecki 将介绍 AOP 是怎样通过根本转变模式实现来解决这问题他研究了 3个经典 Gof 设计模式 (适配器模式、修饰器模式和观察者模式)同时还将讨论使用面向方面技术实现这些模式所带来实战和设计方面好处
什么是设计模式?根据 Design Patterns: Elements of Reusable Object-Oriented [阅读全文] [PDF]
在这篇文章第1 部分中我从面向方面角度研究了两个广泛应用面向对象设计模式在演示了适配器和修饰器模式在 Java 系统和 AspectJ 系统中实现方式的后我从代码理解、重用、维护性和易于组合几方面考虑了每种实现效果在两种情况下我发现横切 Java 实现模块性模式在 AspectJ 实现中可以组合到单独个方面中理论上这种相关代码协同定位可以使模式变得更易理解、更改和应用用这种方式看模式就转变对 AOP 个常见批评 —— 阻止开发人员通过阅读代码了解代码行为在这篇文章第 2 部分中我将通过深入研究观察者(Observer)模式完成我 [阅读全文] [PDF]
抽象工厂模式是对象创建模式它是工厂思路方法进步推广它为客户提供个接口使得客户不必在意产品类型情况下创建多个产品族中产品对象
现在将工厂创建思路方法交由个具体抽象工厂方面来处理从而具体工厂类不需要知道需要实现哪个抽象工厂也不必了解产品创建逻辑
抽象工厂方面使用Inter-type声明为工厂类声明了需实现抽象工厂接口并根据捕捉到创建思路方法实施具体创建逻辑
AbstractFactoryAspect.java
public aspect AbstractFactoryAspect...{
public Cpu ComputerP [阅读全文] [PDF]
工厂思路方法模式根据产品等级结构使用对应工厂来创建特定产品它般包括抽象工厂、具体工厂和抽象产品、具体产品每个特定工厂用于创建个对应产品模式简易UML图例如下
;//创建Grape
fruit.grow;
fruit.harvest;
fruit.plant;
// Apple; Grape;//产生编译不能直接生成产品
}
}
测试代码使用苹果和葡萄园丁分别创建了苹果和葡萄其运行结果如下
Apple is growing...
Apple has been harvested.
Apple has been planted.
Grape is [阅读全文] [PDF]
举例介绍说明
装饰模式是大家都很熟悉个模式最典型例子就是JavaI/O库它设计完全按照装饰模式我们通常在客户端使用操作符来对个类进行包装例如下述代码
DataOutputStream out= DataOutputStream( FileOutputStream(“1.txt”));
它使用DataOutputStream来包装FileOutputStream所以可以使用前者思路方法来对文件流进行写入而采用AspectJ实现装饰模式中在客户端我们将不在看见这样操作而是直接将装饰行为织入思路方法执行内部在思路方法 [阅读全文] [PDF]
举例介绍说明
单例模式有以下些基本特点
·单例类只能有个例子
·单例类必须自己创建自己唯例子
·单例类必须给所有其他对象提供这例子
在Java中我们实现单例类般需要使用私有构造子和个静态例子变量还要提供个思路方法如getInstance来构造并返回这个例子变量而使用AspectJ实现单例模式可以完全将这些细节交由个具体方面处理客户端仍可以使用操作符创建对象例子而且该方面将利用声明(declare error)机制联合pocut捕捉单例类子类构造行为并将其禁止以保证单例类例子不会被其 [阅读全文] [PDF]
策略模式把行为和环境分割开来环境类负责维持和查询行为类各种算法则由具体策略类实现由于算法和环境独立开来算法增减修改都不会影响环境和客户端策略模式简易UML图例如下
Discount;
discount.Strategy( NoDiscountStrategy(price,copies));
.out.prln("Discount using No Discount Strategy is:"+discount.getDiscount);
discount.Strategy( FlatRateStrategy(p [阅读全文] [PDF]
在Java语言中从织入切面方式上来看存在 3种织入方式:编译期织入、类加载期织入和运行期织入编译期织入是指在Java编译期采用特殊编译器将切面织入到Java类中;而类加载期织入则指通过特殊类加载器在类字节码加载到JVM时织入切面;运行期织入则是采用CGLib工具或JDK动态代理进行切面织入
AspectJ采用编译期织入和类加载期织入方式织入切面是语言级AOP实现提供了完备AOP支持它用AspectJ语言定义切面在编译期或类加载期将切面织入到Java类中
在低版本Spring中你只能通过接口定义切面在Spring 2.0中你可以通过Aspect [阅读全文] [PDF]
曾被看作Spring2.1Spring2.5最近已经发布了其RC1版本记者采访了Spring框架首席开发者Juergen Hoeller来了解有关这个版本更多信息
Hoeller说Spring2.5最终版将于07年11月19日发布该版本主要特征包括:
◆对Spring2.0平滑升级
Spring2.5被设计成为对Spring2.0平滑升级现存代码和配置文件不需要做任何更改
◆更多XML命名空间配置
新命名空间
◆完全支持Java 6和Java EE 5
Spring2.5支持Java 6和Java EE 5所有 [阅读全文] [PDF]
曾被看作Spring2.1 Spring2.5最近已经发布了其RC1版本InfoQ采访了Spring框架首席开发者Juergen Hoeller来了解有关这个版本更多信息
Hoeller说Spring2.5最终版将于今年11月19日发布该版本主要特征包括:
对Spring2.0平滑升级 —— Spring2.5被设计成为对Spring2.0平滑升级现存代码和配置文件不需要做任何更改
更多XML命名空间配置 —— 新命名空间包括和
完全支持Java 6和Java EE 5 —— Spring2.5支持Java 6和Java EE 5所有新特性——同时也提 [阅读全文] [PDF]
1 共10条 分1页
- +_@开青岛发票13434444051程生
- 一个简单的 2层系统分析全程
- 主题和皮肤系列(3)
- 主题和皮肤系列(1)
- 主题和皮肤系列(2)
- 鼠标移上去显示层:鼠标滑过显示隐藏层(转)
- jspajax自动刷新:jsp+ajax自动刷新例子(转)
- form表单验证:用js将form表单同时提交到两个区别页面的思路方法
- php上传代码:php统计代码总行数
- 最佳网页宽度及其实现
- 联想2155:PKU 2155
- micboost什么意思:Boost 概述
- atmega16ucosii:μC/OS-II实时性能测试和分析
- cssimportant:4 种实时操作系统实时性的分析对比 --转 time too important
- 基于OHCI的USB主机 —— 总体构架
- 虚拟主机usb:基于OHCI的USB主机 —— 背景介绍
- vc用法:VC使用方法汇总
- 张孝祥《Java就业培训教程》源代码 02 部分
- 抽象类和接口:详细解析Java中抽象类和接口的区别
- 跟踪技术:JSP中的会话跟踪技术