精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-09
Interface play as Placeholder, without any class implement it 有个这个题目是在ApectJ的应用,以及博客园子中一个blog讨论什么时候用接口(一个很古老的话题)。 package placeholder;
import java.util.Date; /** * @author Anders.Lin * */ public class Order { private String orderCode; private Date commerceDate; private Long userId; public Order(){ } public Order(String orderCode, Date commerceDate, Long userId){ this.orderCode = orderCode; this.commerceDate = commerceDate; this.userId = userId; } public Date getCommerceDate() { return commerceDate; } public void setCommerceDate(Date commerceDate) { this.commerceDate = commerceDate; } public String getOrderCode() { return orderCode; } public void setOrderCode(String orderCode) { this.orderCode = orderCode; } public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } } OrderService类 package placeholder;
/** * @author Anders.Lin * */ public interface OrderService { public void ship(Order order); } Main类 package placeholder;
import java.util.Date; /** * @author Anders.Lin * */ public class Main { private OrderService orderService; public void ship(Order order){ orderService.ship(order); } /** * @param args */ public static void main(String[] args) { Order order = new Order("Anders007", new Date(), new Long(1)); Main main = new Main(); main.ship(order); } } OrderServiceAspect package placeholder;
/** * @author Anders.Lin * */ public aspect OrderServiceAspect { pointcut ship(): call(void OrderService.ship(..)); void around(Order order) : ship() && args(order){ System.out.println("ship "+ order.getOrderCode() + " sucess!"); } } 虽然AspectJ的功能如此强大, 接口真正做占位符用的情况,估计还是有很多人提出异议,这样做我有什么好处,和我写接口实现类相比? 技术好坏只有自己展控了才知道,AspectJ提供这样一个选择,怎么做还是自己琢磨着吧。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-10
//1. 模型上,强迫所有人思考——接口到底做什么,而不是怎么做
感觉实际是让代码变得复杂来做到这一点(OrderServiceAspect 做了OrderServiceImpl的事,没觉得把子类放在impl包或通过第三方包实现要好) //2. 语言上,更加动态性,不在依赖接口的完整签名 用IOC便实现了动态性,用aspect原则上也是依赖于aspect实现的啊 "不依赖接口的完整签名"我不明白,是不是不依赖具体类命名的意思? |
|
返回顶楼 | |
发表时间:2007-02-10
//1. 模型上,强迫所有人思考——接口到底做什么,而不是怎么做
感觉实际是让代码变得复杂来做到这一点(OrderServiceAspect 做了OrderServiceImpl的事,没觉得把子类放在impl包或通过第三方包实现要好) 如果一定要从代码上看,并没有变的复杂。 //2. 语言上,更加动态性,不在依赖接口的完整签名 用IOC便实现了动态性,用aspect原则上也是依赖于aspect实现的啊 "不依赖接口的完整签名"我不明白,是不是不依赖具体类命名的意思? 是的,不需要方法名,输入参数类型上约束 |
|
返回顶楼 | |
浏览 2896 次