|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-02-09 关键字: AOP OO
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提供这样一个选择,怎么做还是自己琢磨着吧。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-02-10
//1. 模型上,强迫所有人思考——接口到底做什么,而不是怎么做
感觉实际是让代码变得复杂来做到这一点(OrderServiceAspect 做了OrderServiceImpl的事,没觉得把子类放在impl包或通过第三方包实现要好) //2. 语言上,更加动态性,不在依赖接口的完整签名 用IOC便实现了动态性,用aspect原则上也是依赖于aspect实现的啊 "不依赖接口的完整签名"我不明白,是不是不依赖具体类命名的意思? |
|
| 返回顶楼 | |
|
时间:2007-02-10
//1. 模型上,强迫所有人思考——接口到底做什么,而不是怎么做
感觉实际是让代码变得复杂来做到这一点(OrderServiceAspect 做了OrderServiceImpl的事,没觉得把子类放在impl包或通过第三方包实现要好) 如果一定要从代码上看,并没有变的复杂。 //2. 语言上,更加动态性,不在依赖接口的完整签名 用IOC便实现了动态性,用aspect原则上也是依赖于aspect实现的啊 "不依赖接口的完整签名"我不明白,是不是不依赖具体类命名的意思? 是的,不需要方法名,输入参数类型上约束 |
|
| 返回顶楼 | |
浏览 1574 次







*

}
